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
    评论
ET框架(Event Tracing)是一种用于系统追踪和性能分析的框架。它可以通过在代码中插入事件追踪点来记录程序的执行过程,包括函数调用、参数传递、返回值等信息,以便后续的分析和优化。ET框架的主要目的是帮助开发人员理解和改进他们的代码,在系统的多个层次进行性能分析和优化。 而网络分离是指将网络通信从应用程序中拆分开来,使得网络相关操作可以独立于主应用程序运行。通过网络分离,可以将网络通信和应用逻辑分离,降低系统的耦合度,同时提高系统的可维护性和可扩展性。 ET框架与网络分离结合使用可以带来一些好处。首先,ET框架可以记录网络通信的事件,包括数据发送和接收等操作,以帮助开发人员分析网络性能,并发现潜在的问题。其次,通过网络分离,可以将网络通信模块作为一个独立的组件,使得多个应用程序可以共享该组件,减少重复代码的编写和维护工作。同时,通过网络分离,还可以使用不同的网络通信方式,比如使用不同的协议或者切换网络库,以更好地适应不同的应用场景。 总之,ET框架和网络分离都是为了提高系统的性能和可扩展性而采取的措施。通过结合使用,可以更好地分析和优化应用程序的网络通信,提高系统的响应速度和并发能力,同时减少代码的重复和维护工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值