自定义事件系统

在游戏中经常会用到事件,注册(监听)事件,派发事件,移除事件,写一个单监听的事件系统,用起来还是很方便的。
C#层事件系统定义

     public class EventTools
    {
        public delegate void EventCall(object param);//设置委托有参变量
        private static Dictionary<int, EventTools.EventCall> data = new Dictionary<int, EventTools.EventCall>();//事件队列

        /// <summary>
        /// 注册事件
        /// </summary>
        /// <param name="id">事件id</param>
        /// <param name="callBack">事件回调</param>
        public static void RegisterEvent(int id, EventTools.EventCall callBack)
        {
            bool flag = EventTools.data.ContainsKey(id);
            if (flag)
            {
                EventTools.data[id] = callBack;
            }
            else
            {
                EventTools.data.Add(id, callBack);
            }
        }
        /// <summary>
        /// 移除事件
        /// </summary>
        /// <param name="id"></param>
        public static void RemoveEvent(int id)
        {
            bool flag = EventTools.data.ContainsKey(id);
            if (flag)
            {
                EventTools.data.Remove(id);
            }
        }
        /// <summary>
        /// 派发事件
        /// </summary>
        /// <param name="id"></param>
        /// <param name="param"></param>
        public static void SendEvent(int id, object param = null)
        {
            bool flag = EventTools.data.ContainsKey(id);
            if (flag)
            {
                EventTools.data[id](param);
            }
            else
            {
                //Debug.Log(typeof(EventTools)+"send event of id = " + id + " is not be Register");
            }
        }

    }

在提供对应的接口供lua调用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue.js中,您可以自定义事件来实现组件之间的通信。Vue.js提供了一个事件系统,允许您在组件中触发和监听自定义事件。 要在Vue组件中触发自定义事件,您可以使用`$emit`方法。例如,假设您有一个按钮组件,并希望在点击按钮时触发一个自定义事件: ```vue <template> <button @click="handleClick">点击我</button> </template> <script> export default { methods: { handleClick() { this.$emit('custom-event', '自定义事件的数据'); } } } </script> ``` 在上面的示例中,当按钮被点击时,`handleClick`方法将通过`$emit`方法触发名为`custom-event`的自定义事件,并传递一个字符串作为事件数据。 要在另一个组件中监听和处理自定义事件,您可以使用`v-on`指令或简写的`@`符号来监听事件。例如,假设您有一个父组件,希望在接收到子组件触发的自定义事件时执行某些操作: ```vue <template> <div> <child-component @custom-event="handleCustomEvent"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, methods: { handleCustomEvent(data) { console.log('接收到自定义事件:', data); // 执行其他操作... } } } </script> ``` 在上面的示例中,父组件使用`@custom-event`监听子组件触发的自定义事件,并通过`handleCustomEvent`方法处理事件。当子组件触发自定义事件时,父组件将打印事件数据并执行其他操作。 这只是Vue.js中自定义事件的基本用法,您可以根据具体需求进行更复杂的事件处理和通信。希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值