游戏中的事件系统

我对事件的理解

事件:当你操作UI组件时,点击一个按钮,滑动一次列表或者更新一个数据系统都会创建一个个事件将你的操作分发到各个系统上.

在游戏开发中事件是一个非常用的一个功能,比如我们在游戏中获得了金币,然后我们的金币展示会更新,我们商店道具是否可以购买会更新,又或者我们金币任务里面的金币进度会更新。事件提供的功能就是一个一对多的平台,可以降低我们的代码耦合性。同时在我们后续开发中如果有新增功能需要监听这个变化时可以方便快捷的添加监听。

事件的标识

每一个事件都因该有一个唯一的表示,这个唯一标识,因为事件是一个全局的,所以这个唯一表示应该是全局唯一的标识。常见的方法一般有使用 int 和使用 string 标识。

我们先来对比一下两种标识的优缺点:

  • int

    • 优点:

      1. 性能更高:int 存储在栈内,string 存储在堆内,一般来说 int 的操作通常比 string 要快得多
      2. 内存使用更少:int 通常只占用4字节,而字符串要存储每个字符,并且还有可能会有额外的内存开销(长度信息,编码信息)
    • 缺点:

      1. 可读性差:int 本身并没有任何意义,开发时要经常跳转到脚本中查看 ID 所对应代表的事件,当然可以使用enum增加可读性
      2. 拓展性差:如果使用 int 作为唯一标识,代表脚本中必须有一个统一的文件时使用 enum 或者 class 去统一管理所有的事件Id,去管理防止不同模块之间的事件发生冲突。而不是由各个模块自己去
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值