You get latest content at a time when data will updated
Automaticaly take backup as par schedule
Allow to show public user message
代码位于\assets\script\game\initialize\Initialize.ts [code_...
代码位于\assets\script\game\initialize\Initialize.ts
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CommonNet } from "../common/CommonNet";
import { smc } from "../common/SingletonModuleComp";
import { InitResComp, InitResSystem } from "./bll/InitRes";
import { LoginComp, LoginSystem } from "./bll/Login";
import { AccountModelComp } from "./model/AccountModelComp";
import { GateModelComp } from "./model/GateModelComp";
/** 游戏进入初始化模块 */
@ecs.register(Initialize)
export class Initialize extends ecs.Entity {
GateModel: GateModelComp;
AccountModel: AccountModelComp;
protected init() {
this.addComponents(
GateModelComp,
AccountModelComp);
// 实始化TSRPC网络模块
smc.net = new CommonNet();
// 初始化游戏公共资源
this.add(InitResComp);
}
/** 帐号登录 */
login(username: string, server: string) {
var comp = this.add(LoginComp);
comp.username = username;
comp.server = server;
}
}
export class EcsInitializeSystem extends ecs.System {
constructor() {
super();
this.add(new InitResSystem());
this.add(new LoginSystem());
}
}
1. **初始化模块 (`Initialize` 类)**:
– 该类继承了 `ecs.Entity`,用于表示游戏中的一个实体(对象),它在 `@ecs.register(‘Initialize’)` 装饰器中注册。
– 主要的功能是为游戏初始化一些模块,例如 `GateModelComp` 和 `AccountModelComp`,以及后续处理帐号登录。
– `init()` 函数在实体创建时调用,主要作用是:
– 添加了 `GateModelComp` 和 `AccountModelComp` 组件,这些组件可能用于保存服务器门信息和账号信息。
– 实例化并初始化了 `CommonNet`(TSRPC网络模块),用于网络通信。
– 添加 `InitResComp` 组件,说明该实体初始化时,还会触发资源初始化(这个部分的逻辑可能在 `InitResSystem` 中处理)。
2. **登录流程 (`login` 方法)**:
– 当调用 `login(username: string, server: string)` 方法时:
– 创建了一个 `LoginComp` 组件。
– 将传入的 `username` 和 `server` 信息赋值给 `LoginComp`,这表明用户名和服务器地址是在这个步骤中获取的,并保存在 `LoginComp` 组件中。
3. **系统 (`EcsInitializeSystem` 类)**:
– 这是一个系统类,负责游戏的初始化流程和登录流程。
– `EcsInitializeSystem` 中创建了 `InitResSystem` 和 `LoginSystem`,这些系统可能负责资源加载和登录的具体逻辑。
– `InitResSystem` 处理初始化资源的逻辑。
– `LoginSystem` 处理登录流程,比如通过 `LoginComp` 中的信息执行登录操作。
账号登录信息是在 `Initialize` 实体的 `login()` 方法中获取的。具体流程为:
1. `login(username: string, server: string)` 被调用,传入了 `username` 和 `server` 参数。
2. 在这个方法内部,创建了一个 `LoginComp` 组件,并将 `username` 和 `server` 分别存储在该组件的属性中。
3. 这些信息存储后,会通过 `LoginSystem` 系统来处理具体的登录逻辑。
**总结:**
– 账号(`username`)是在调用 `Initialize` 类的 `login()` 方法时被传递并存储的。