UnityGameFramework事件

GameFramework事件

Game Framework 中的很多模块在完成操作后都会抛出内置事件,监听这些事件将大大解除游戏逻辑之间的耦合。
除了这些内置事件,用户也可以定义自己的游戏逻辑事件。为了自定义游戏逻辑事件,需要在项目内将 EventId 枚举进行扩展,扩展的事件需要从 UnityGameFramework.Runtime.EventId.GameEventStart 之后开始。

    /// 事件类型编号。
    /// </summary>
    public enum EventId
    {
        GameEventStart = UnityGameFramework.Runtime.EventId.GameEventStart,
    }

同时,在游戏逻辑层给 EventComponent 增加一些扩展方法,使得游戏内能够方便的使用这个 EventId 进行操作。

{
        // 扩展检查订阅事件方法
        public static bool Check(this EventComponent eventComponent, EventId eventId, EventHandler<GameEventArgs> handler)
        {
            return eventComponent.Check((UnityGameFramework.Runtime.EventId)eventId, handler);
        }
 
        // 扩展订阅事件方法
        public static void Subscribe(this EventComponent eventComponent, EventId eventId, EventHandler<GameEventArgs> handler)
        {
            eventComponent.Subscribe((UnityGameFramework.Runtime.EventId)eventId, handler);
        }
 
        // 扩展取消订阅事件方法
        public static void Unsubscribe(this EventComponent eventComponent, EventId eventId, EventHandler<GameEventArgs> handler)
        {
            eventComponent.Unsubscribe((UnityGameFramework.Runtime.EventId)eventId, handler);
        }
    }

订阅事件:

 EventComponent eventComponent = GameEntry.GetComponent<EventComponent>();
 eventComponent.Subscribe(UnityGameFramework.Runtime.EventId.LoadDataTableSuccess, OnLoadDataTableSuccess);

取消订阅事件:

EventComponent eventComponent = GameEntry.GetComponent<EventComponent>();
            eventComponent.Unsubscribe(UnityGameFramework.Runtime.EventId.LoadDataTableSuccess, OnLoadDataTableSuccess);

定义事件处理函数

 private void OnLoadDataTableSuccess(object sender, GameEventArgs e)
        {
            UnityGameFramework.Runtime.LoadDataTableSuccessEventArgs ne = e as UnityGameFramework.Runtime.LoadDataTableSuccessEventArgs;
            // Do something.
            Log.Info("Load data table '{0}' success.", ne.DataTableName);
        }

抛出事件:

    EventComponent eventComponent = GameEntry.GetComponent<EventComponent>();
 
            // 抛出事件,这个操作是线程安全的,即使不在主线程中抛出,也可保证在主线程中回调事件处理函数,但事件会在抛出后的下一帧分发。
            eventComponent.Fire(this, new XXXEvent());
 
            // 抛出事件立即模式,这个操作不是线程安全的,事件会立刻分发。
            eventComponent.FireNow(this, new XXXEvent());

当事件被抛出后,订阅过此事件的事件处理函数就会得到响应。
enentCompoent
int Count (int id)
获取事件处理函数的数量。 更多…

bool Check (int id, EventHandler< GameEventArgs > handler)
检查是否存在事件处理函数。 更多…

void Subscribe (int id, EventHandler< GameEventArgs > handler)
订阅事件处理回调函数。 更多…

void Unsubscribe (int id, EventHandler< GameEventArgs > handler)
取消订阅事件处理回调函数。 更多…

void SetDefaultHandler (EventHandler< GameEventArgs > handler)
设置默认事件处理函数。 更多…

void Fire (object sender, GameEventArgs e)
抛出事件,这个操作是线程安全的,即使不在主线程中抛出,也可保证在主线程中回调事件处理函数,但事件会在抛出后的下一帧分发。 更多…

void FireNow (object sender, GameEventArgs e)
抛出事件立即模式,这个操作不是线程安全的,事件会立刻分发。 更多…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Unity游戏框架是一种基于Unity引擎的游戏开发框架,它提供了一系列的工具和功能,帮助开发者快速构建游戏。该框架包括了游戏逻辑、资源管理、UI界面、网络通信、音效、动画等方面的功能,可以大大提高游戏开发的效率和质量。同时,Unity游戏框架也支持多平台发布,包括PC、移动设备、Web等。 ### 回答2: Unity Game Framework(简称UGF)是一款用于开发游戏的开源框架。它基于Unity引擎,并提供了一系列功能模块,使开发者可以更加轻松、高效地创建游戏。 UGF具有以下几个主要特点: 1. 强大的模块化设计:UGF采用了模块化设计的思想,将游戏开发中常用的功能分解为多个独立的模块,如资源管理、事件系统、状态机等,每个模块都可以独立使用,也可以根据需要进行组合和定制。这种设计使得开发者能够更加灵活地构建自己的游戏逻辑。 2. 简化的编程模式:UGF提供了一套简化的编程模式,包括了一些常用的编程工具和常用功能的封装,如对象池、定时器、网络通信等,这些工具和功能使得开发者在编写代码时能够更加高效地处理游戏逻辑,提升开发效率。 3. 可扩展性强:UGF的设计允许开发者自定义扩展功能模块,以满足项目特定需求。开发者可以通过编写新的模块,并将其集成到框架中,从而实现特定功能的扩展。这种可扩展性可以满足不同类型的游戏开发需求,并提供了更大的自由度。 4. 多平台支持:UGF基于Unity引擎,因此可以支持多平台的游戏开发,包括PC、移动设备、主机等。开发者只需要根据具体平台的需求进行相应的适配,就可以在不同的平台上发布游戏。 总之,Unity Game Framework是一款功能强大、灵活可扩展的游戏开发框架,通过其提供的模块化设计、简化的编程模式、可扩展性强、多平台支持等特点,使得游戏开发者能够更加高效地开发出优秀的游戏作品。 ### 回答3: Unity Game Framework(UGF)是一个用于开发 Unity 游戏的开源框架。它提供了一套易于使用和扩展的工具和功能,可以帮助开发者更高效地创建游戏。 UGF的核心特性是模块化和可扩展性。开发者可以根据项目的需求选择和集成所需的模块,从而实现游戏的定制化开发。UGF还提供了一套灵活的开发架构,使开发者能够轻松地扩展和定制框架,以适应不同类型的游戏开发。 UGF提供了许多常用的功能模块,例如资源管理、对象池、状态机等。这些模块可以帮助开发者简化开发流程,并提供高效的游戏性能。UGF还提供了一套可视化的编辑器工具,使开发者能够更直观地管理和配置游戏资源。 UGF还支持多平台发布,可以轻松地发布到多个平台,包括PC、移动设备和主机。这使得开发者可以更广泛地覆盖用户群体,并实现跨平台游戏开发。 总之,Unity Game Framework是一个强大且灵活的游戏开发框架,它可以帮助开发者提高游戏开发效率和性能,同时还具备了可定制化和跨平台发布等特点,是游戏开发者的不错选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值