04-ET框架的事件系统

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();
        }
    }
}

总结

目前学到这还算能顶。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值