Profile Image
3
Josephin DoeTyping . .
Profile Image
1
Lary Doeonline
Profile Image
Aliceonline
Profile Image
1
Alia10 min ago
Profile Image
Suzen15 min ago
Profile Image
3
Josephin DoeTyping . .
Profile Image
1
Lary Doeonline
Profile Image
Aliceonline
Profile Image
1
Alia10 min ago
Profile Image
Suzen15 min ago
Profile Image
3
Josephin DoeTyping . .
Profile Image
1
Lary Doeonline
Profile Image
Aliceonline

New Group

New Contact

Profile Image

Josephin Doei am not what happened . .

Profile Image
Lary DoeAvalable
Profile Image
Alicehear using Dasho
A
AliaAvalable
Profile Image
SuzenAvalable
JD
Josephin DoeDon't send me image
Profile Image
Lary Doenot send free msg
Desktop settings

You get latest content at a time when data will updated

Application settings

Automaticaly take backup as par schedule

System settings

Allow to show public user message

Josephin Doe
Profile Image

hello tell me something

about yourself?

8:20 a.m.

Ohh! very nice

8:22 a.m.

Profile Image
Profile Image

can you help me?

8:20 a.m.

文章详情

代码位于\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());
    }
}

这段代码基于一个 `ecs` 架构(实体-组件-系统),它是为初始化游戏并处理登录流程而编写的。代码主要分为两个部分:**实体(Entity)和系统(System)**。让我逐步分析流程并指出账号登录的节点。

代码流程分析:

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()` 方法时被传递并存储的。

发表评论