TIPS:
本系列贴仅用于博主学习ET框架的记录
前言
ET框架的事件系统的学习。
一、使用ET的事件组装电脑实体(Computer)
1.同步事件
(1)打开ET目录下的Client-Server.sln,打开Client/Unity.Model/Codes/Model/Demo文件夹下的EventType.cs文件,在末尾添加一个事件结构体InstallComputer。
代码如下(示例):EventType.cs
namespace ET
{
namespace EventType
{
...
...
...
public struct InstallComputer
{
public Computer Computer;
}
}
}
(2)回到AfterCreateZoneScene_AddComponent.cs文件下注释掉之前的代码,发布一个同步的事件。
代码如下(示例):AfterCreateZoneScene_AddComponent.cs
namespace ET
{
public class AfterCreateZoneScene_AddComponent: AEvent<EventType.AfterCreateZoneScene>
{
protected override void Run(EventType.AfterCreateZoneScene args)
{
Scene zoneScene = args.ZoneScene;
zoneScene.AddComponent<UIComponent>();
zoneScene.AddComponent<UIPathComponent>();
zoneScene.AddComponent<UIEventComponent>();
zoneScene.AddComponent<RedDotComponent>();
zoneScene.AddComponent<ResourcesLoaderComponent>();
zoneScene.GetComponent<UIComponent>().ShowWindow(WindowID.WindowID_Login);
Computer computer = zoneScene.AddChild<Computer>();
Game.EventSystem.Publish(new EventType.InstallComputer(){Computer = computer});
}
}
}
(3)发布了事件就要有一个处理事件的类,在Unity.HotfixView/Codes/HotfixView/Demo下创建一个Computer文件夹,再在Computer文件夹下新建一个Event文件夹,之后在Event文件夹下新建一个事件处理的类InstallComputer_AddComponent.cs
代码如下(示例):InstallComputer_AddComponent .cs
using ET.EventType;
namespace ET
{
public class InstallComputer_AddComponent : AEvent<EventType.InstallComputer>
{
protected override void Run(InstallComputer a)
{
Computer computer = a.Computer;
computer.AddComponent<PCCaseComponent>();
computer.AddComponent<MonitorsComponent>();
computer.Start();
}
}
}
(4)保存代码返回编辑器F5等待编译结束即可运行查看。
实体成功添加上了组件。
2.异步事件
异步事件和同步事件差不多,不过发布事件时要使用PublishAsync,事件处理类需要继承AEventAsync。
Game.EventSystem.PublishAsync(new EventType.InstallComputerAsync() { Computer = computer }).Coroutine();
using ET.EventType;
namespace ET
{
public class InstallComputerAsync_AddComponent: AEventAsync<InstallComputerAsync>
{
protected async override ETTask Run(InstallComputerAsync args)
{
Computer computer = args.Computer;
computer.AddComponent<PCCaseComponent>();
computer.AddComponent<MonitorsComponent>();
await TimerComponent.Instance.WaitAsync(3000);//等待三秒
computer.Start();
}
}
}
总结
目前学到这还算能顶。