private static async ETTask StartAsync()
{
WinPeriod.Init();
// 注冊(cè)Mongo type
MongoRegister.Init();
// 注冊(cè)Entity序列化器
EntitySerializeRegister.Init();
World.Instance.AddSingleton<IdGenerater>();
World.Instance.AddSingleton<OpcodeType>();
World.Instance.AddSingleton<ObjectPool>();
World.Instance.AddSingleton<MessageQueue>();
World.Instance.AddSingleton<NetServices>();
World.Instance.AddSingleton<NavmeshComponent>();
World.Instance.AddSingleton<LogMsg>();
// 創(chuàng)建需要reload的code singleton
CodeTypes.Instance.CreateCode();
await World.Instance.AddSingleton<ConfigLoader>().LoadAsync();
await FiberManager.Instance.Create(SchedulerType.Main, ConstFiberId.Main, 0, SceneType.Main, "");
}
最后一段代碼FiberManager.Instance.Create 創(chuàng)建主纖程系洛。
創(chuàng)建纖程.jpg
內(nèi)部根據(jù)場(chǎng)景類型,Invoke了一個(gè)類似函數(shù)的函數(shù),此處是 SceneType.Main場(chǎng)景類型。
注意在EventSystem實(shí)例創(chuàng)建的時(shí)候脱羡,已經(jīng)通過(guò)反射記錄保存了所有的帶InvokeAttribute特性的類,此處通過(guò)場(chǎng)景類型定位到該已實(shí)例化的對(duì)象免都,并且調(diào)用處理函數(shù)Handle锉罐,如下圖所示。
開(kāi)始.jpg
接著看標(biāo)記了InvokeAttribute特性并指明SceneType.Main類型的類
3.jpg
發(fā)布了3個(gè)事件绕娘,EntryEvent1 EntryEvent2 EntryEvent3 3個(gè)入口事件脓规。
4.jpg
代碼如下圖:
5.jpg
掛載了各種組件,根據(jù)配置修改root的場(chǎng)景類型险领,發(fā)布一個(gè)初始化完成的事件侨舆,此處場(chǎng)景類型是SceneType.Demo。
6.jpg
創(chuàng)建UI绢陌,內(nèi)部通過(guò) UI類型(此處是 UILogin) 找到對(duì)應(yīng)的事件調(diào)用 OnCreate 函數(shù)挨下,如下:
創(chuàng)建登錄界面.jpg
至此,出現(xiàn)了登錄界面脐湾。