[Base Class](../groups/Extension.Base Class.md) / ModuleS
ModuleS<T, S> Class
Base class of server module
All server modules must inherit this class in order to be managed by Modulus Service.
Note: Inherits method names from the Modulus S class. Methods with the prefix 'net_XXX' can only be called in the client.
In the Script class, it is said that the classes inherited from Script enjoy the life cycle of onStart(), onUpdate() and onDestroy() script. On this basis, when the client server and data module are registered in the onStart() function
ModuleService.registerModule(YourModS, YourModC, YourData);
Classes inherited from Modulus S also encapsulate a set of lifecycles.
Usage example: create a script named ModuleSExample, place it in the object bar, open the script, modify the original content as follows, save and run the game, the server log will output the log of the player module's execution in each life cycle, and press the F key to see the Player level information in the server log.
@Component
export default class ModuleSExample extends Script {
protected onStart(): void {
ModuleService.registerModule(PlayerModuleS, PlayerModuleC, PlayerModuleData);
}
}
class PlayerModuleC extends ModuleC<PlayerModuleS, PlayerModuleData>{
protected onStart(): void {
InputUtil.onKeyDown(Keys.F, () => {
this.server.net_LevelUp();
})
}
}
class PlayerModuleS extends ModuleS<PlayerModuleC, PlayerModuleData>{
protected onAwake(): void {
Console.log ("---------- Server Layer Module Creation Module ----------");
}
protected onStart(): void {
Console.log ("------------ Server layer module start ----------");
}
protected onPlayerEnterGame(player: Player): void {
Console.log ("---------- Server layer module player enters game ----------");
}
protected onPlayerJoined(player: Player): void {
Console.log ("---------- Server layer module player joining -----------");
}
protected onPlayerLeft(player: Player): void {
Console.log ("---------- Server layer module player leaving ----------");
}
protected onUpdate(dt: number): void {
//Each frame call dt is the time difference between two frames
// Console. log ("---------- Server layer module update ----------"+dt);
}
//Player upgrade
public net_LevelUp(): void {
//The client player data that calls this function
let playerData = this.currentData;
playerData.levelUp();
Console. log ("Player level:", playerData. getlevel());
}
}
class PlayerModuleData extends Subdata {
@Decorator.persistence()
private level: number;
protected initDefaultData(): void {
this.level = 0;
}
public getlevel(): number {
return this.level;
}
public levelUp(): void {
this.level++;
//Save data
this.save(true);
}
}
@Component
export default class ModuleSExample extends Script {
protected onStart(): void {
ModuleService.registerModule(PlayerModuleS, PlayerModuleC, PlayerModuleData);
}
}
class PlayerModuleC extends ModuleC<PlayerModuleS, PlayerModuleData>{
protected onStart(): void {
InputUtil.onKeyDown(Keys.F, () => {
this.server.net_LevelUp();
})
}
}
class PlayerModuleS extends ModuleS<PlayerModuleC, PlayerModuleData>{
protected onAwake(): void {
Console.log ("---------- Server Layer Module Creation Module ----------");
}
protected onStart(): void {
Console.log ("------------ Server layer module start ----------");
}
protected onPlayerEnterGame(player: Player): void {
Console.log ("---------- Server layer module player enters game ----------");
}
protected onPlayerJoined(player: Player): void {
Console.log ("---------- Server layer module player joining -----------");
}
protected onPlayerLeft(player: Player): void {
Console.log ("---------- Server layer module player leaving ----------");
}
protected onUpdate(dt: number): void {
//Each frame call dt is the time difference between two frames
// Console. log ("---------- Server layer module update ----------"+dt);
}
//Player upgrade
public net_LevelUp(): void {
//The client player data that calls this function
let playerData = this.currentData;
playerData.levelUp();
Console. log ("Player level:", playerData. getlevel());
}
}
class PlayerModuleData extends Subdata {
@Decorator.persistence()
private level: number;
protected initDefaultData(): void {
this.level = 0;
}
public getlevel(): number {
return this.level;
}
public levelUp(): void {
this.level++;
//Save data
this.save(true);
}
}
Type parameters
T | T |
---|---|
S | extends Subdata |
Hierarchy
ModuleS
Table of contents
Accessors
currentData(): S |
---|
DataOwner of the Player who calls the call method |
currentPlayer(): Player other |
Players who call server methods |
currentPlayerId(): number other |
Get the player ID that calls the server method |
Methods
getAllClient(): T other |
---|
Get the 'All Clients' calling object |
getClient(player : number Player ): T other |
Obtain the "single client" calling object based on the player |
getPlayerData(player : string number Player ): S other |
Get the data of this module of the designated Player |
onAwake(): void other |
Life cycle method - call when create module |
onDestroy(): void other |
Life cycle method - Destroy Module call |
onExecute(type : number , ...params : any []): void other |
External call an operation of this module |
onPlayerEnterGame(player : Player ): void other |
Life cycle method - Player enters the game (client is ready, data is ready, and front and rear ends can communicate normally) |
onPlayerJoined(player : Player ): void other |
Life cycle method - Player enters the room (Player has just connected to the server, and data and front and rear communication are not ready) |
onPlayerLeft(player : Player ): void other |
Lifecycle Method - Player Leaving Room |
onStart(): void other |
Life cycle method - call when starting the module |
onUpdate(dt : number ): void other |
Life cycle method - Refresh Module call |
Type parameters
T | T |
---|---|
S | extends Subdata <S > |
Accessors
currentData
• | ||
---|---|---|
DataOwner of the Player who calls the call method Precautions Can only be used in server-side RPC methods (methods starting with net_). After the method is executed, it will be cleared. Do not use it elsewhere or asynchronously Returns
|
currentPlayer
• | ||
---|---|---|
Players who call server methods Precautions Can only be used in server-side RPC methods (methods starting with net_). After the method is executed, it will be cleared. Do not use it elsewhere or asynchronously Returns
|
currentPlayerId
• |
---|
Get the player ID that calls the server method Precautions Can only be used in server-side RPC methods (methods starting with net_). After the method is executed, it will be cleared. Do not use it elsewhere or asynchronously Returns |
number |
---|
Methods
getAllClient
• getAllClient(): T
other
Get the 'All Clients' calling object
Returns
T | All Clients call Object |
---|
getClient
• getClient(player
): T
other
Obtain the "single client" calling object based on the player
Parameters
player number Player | Target player Target player ID |
---|
Returns
T | "Single client" call object |
---|
getPlayerData
• Protected
getPlayerData(player
): S
other
Get the data of this module of the designated Player
Parameters
player string number Player | Target Player target Player userId target Player instanceId |
---|
Returns
S | data |
---|
onAwake
• Protected
onAwake(): void
other
Life cycle method - call when create module
onDestroy
• Protected
onDestroy(): void
other
Life cycle method - Destroy Module call
onExecute
• Protected
onExecute(type
, ...params
): void
other
External call an operation of this module
Parameters
type number | Operation type range: type: |
---|---|
...params any [] | Operation parameters |
onPlayerEnterGame
• Protected
onPlayerEnterGame(player
): void
other
Life cycle method - Player enters the game (client is ready, data is ready, and front and rear ends can communicate normally)
Parameters
player Player | Player |
---|
onPlayerJoined
• Protected
onPlayerJoined(player
): void
other
Life cycle method - Player enters the room (Player has just connected to the server, and data and front and rear communication are not ready)
Parameters
player Player | Player |
---|
onPlayerLeft
• Protected
onPlayerLeft(player
): void
other
Lifecycle Method - Player Leaving Room
Parameters
player Player | Player |
---|
onStart
• Protected
onStart(): void
other
Life cycle method - call when starting the module
onUpdate
• Protected
onUpdate(dt
): void
other
Life cycle method - Refresh Module call
Parameters
dt number | Time difference between two frames (unit: seconds) range: type: floating-point number |
---|