[GameFramework]教程04 - 内置事件订阅

这一篇我们来看看怎么订阅内置的一些事件,这些事件有很多很多,比如打开UI成功事件…以及……对,我们一起来看看吧。(旁白:你倒是多举几个例子啊!)

1.创建项目、初始场景、菜单场景

对于这些基础操作,大家参考之前的Demo就好了,这里不多说。

最终我们需要一个初始场景、一个菜单场景,菜单场景里随便加载一个菜单(使用框架的方式),如果大家不指定怎么做的话,请阅读《Demo3-加载UI》或者直接查看本Demo4源码。

2.订阅打开UI成功事件

还记得我们是在哪个地方打开UI的吗?(旁白:不记得)

OK,记得就好,我们的UI是在菜单流程里打开的,因为我们打开的是菜单UI。

为了在UI成功打开的时候做一些羞羞的事情,我们需要用到事件订阅,现在,打开Demo4_ProcedureMenu.cs脚本,修改OnEnter函数:

protected override void OnEnter(ProcedureOwner procedureOwner)
    {
        base.OnEnter(procedureOwner);
        // 加载框架Event组件
        EventComponent Event
            = UnityGameFramework.Runtime.GameEntry.GetComponent<EventComponent>();
        // 加载框架UI组件
        UIComponent UI
            = UnityGameFramework.Runtime.GameEntry.GetComponent<UIComponent>();
        // 订阅UI加载成功事件
        Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess);
        // 加载UI
        UI.OpenUIForm("Assets/Demo4/UI_Menu.prefab", "DefaultGroup", this);
    }

对于加载框架自带组件的方式,都是一样的,通过UnityGameFramework.Runtime.GameEntry.GetComponent的方式加载,以后就不多说了。

为了订阅事件,我们需要加载框架的EventComponent组件。

订阅事件的方式很简单:Event.Subscribe(事件唯一ID, 回调函数)。

OpenUIFormSuccessEventArgs是框架自带的事件类,这个事件类处理的是”打开界面成功事件”,而它的EventId只是一个确保唯一的int类型,用于标识这是什么事件。

而回调函数,当然就是事件发生时我们希望调用的函数了。

订阅完事件之后,就是调用UI租一间的OpenUIForm函数加载UI了, 前两个参数我们在Demo3介绍过了。

最后一个参数是UserData,这是一个自定义的数据,你想传什么都行,在事件发生时,它会通过回调函数传回来。

3.事件回调函数

最后就来看看事件回调函数长什么样吧:

    private void OnOpenUIFormSuccess(object sender, GameEventArgs e)
    {
        OpenUIFormSuccessEventArgs ne = (OpenUIFormSuccessEventArgs)e;
        // 判断userData是否为自己
        if (ne.UserData != this)
        {
            return;
        }
        Log.Debug("UI_Menu:恭喜你,成功地召唤了我。");
    }

通过回调函数的e参数,我们可以获取UserData对象,也就是我们在订阅事件时传入的对象。

4.运行测试

现在,运行游戏,看看效果:

如果能成功地看到日志输出,那就代表我们成功了。


转自:http://www.benmutou.com/archives/2571

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值