查看: 859|回复: 5
打印 上一主题 下一主题

[求助] 【底层时序】关于事件广播与参数系统

[复制链接]

6

主题

14

回帖

12

积分

Lv.1 新手木匠

UID
744743
小麦
1
金锭
78
下界之星
0
跳转到指定楼层
楼主
发表于 2020-1-4 08:52:13 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 IP:浙江
1、事件的广播是在事件发生时,还是加入等待队列,等待统一广播;
2、事件的广播是在触发的当前游戏帧还是下一个游戏帧;
3、事件的广播开始时,是否立刻调用所有对应的事件处理方法;
4、对于可修改参数的事件广播(例如"DamageEvent"的data['damage']),修改的参数是立刻生效还是所有的处理方法完成后再生效,还是处理完后加入队列等待最终所有时间参数统一处理;

5、事件的广播、时间相关数据的更新是发生在游戏帧update()方法前还是帧后;
6、若广播回调参数是统一处理,那处理发生在游戏帧update()方法前还是其后;

7、自定义事件如何使广播出去的参数可修改(例如"DamageEvent"的data['damage'])。

6

主题

14

回帖

12

积分

Lv.1 新手木匠

UID
744743
小麦
1
金锭
78
下界之星
0
沙发
 楼主| 发表于 2020-1-4 08:53:21 来自手机 | 只看该作者 IP:浙江
备注:以上问题仅仅指代服务器间的事件广播 BroadcastEvent()

6

主题

14

回帖

12

积分

Lv.1 新手木匠

UID
744743
小麦
1
金锭
78
下界之星
0
板凳
 楼主| 发表于 2020-1-5 10:10:29 来自手机 | 只看该作者 IP:浙江
8、在单一游戏帧处理过程中,事件的触发是在 update() 之前还是之后

6

主题

14

回帖

12

积分

Lv.1 新手木匠

UID
744743
小麦
1
金锭
78
下界之星
0
地板
 楼主| 发表于 2020-1-5 10:14:53 来自手机 | 只看该作者 IP:浙江
【推理猜测】不知道下面推测的对不对,用的多了直觉猜一下。

1、每一个游戏帧开始时,首先执行游戏内部(相对于mod代码)的代码;
2、每当遇到需要事件处理的时候,会立刻进行广播,并在所有服务器回调完成后,回到广播原点,并继续内部代码的运行;
3、当所有内部代码完成后,在游戏帧结尾,进入 update() 内调用所有服务器的帧线程;
4、老版本的 NeedsUpdate() 会将组件数据的更新加入待处理队列,在服务器帧线程全部完成后会对此队列进行处理,而新版本直接用方法代替了 setter 怀疑内置了待处理队列的方法或是立刻执行变动。

4

主题

1093

回帖

345

积分

Lv.2 石器学徒

UID
3409745
小麦
4
金锭
1241
下界之星
0
地下室
发表于 2020-1-7 17:47:52 | 只看该作者 IP:广东
以下是问题的答复哈。

Q:1.事件的广播是在事件发生时,还是加入等待队列,等待统一广播
A:事件的广播是在事件发生时调用,会广播调用每一个监听了该事件的函数

Q:2.事件的广播是在触发的当前游戏帧还是下一个游戏帧
A:事件的广播发生在当前游戏帧

Q:3.事件的广播开始时,是否立刻调用所有对应的事件处理方法
A:事件广播开始会按照监听的顺序依次调用所有的事件处理方法

Q:4.对于可修改参数的事件广播(例如"DamageEvent"的data['damage']),修改的参数是立刻生效还是所有的处理方法完成后再生效,还是处理完后加入队列等待最终所有时间参数统一处理
A:对于修改了参数的事件广播,如果修改了参数,那么后续的监听方法得到的参数是已经被修改过的参数,待所有的回调函数依次被执行完毕后,会返回给引擎层直接处理

Q:5.事件的广播、时间相关数据的更新是发生在游戏帧update()方法前还是帧后
A:事件的广播和游戏帧的update是分开的,事件是在游戏帧运行到某一时刻触发的,update是按照固定帧率一直执行的

Q:6.若广播回调参数是统一处理,那处理发生在游戏帧update()方法前还是其后
A:同5

Q:7.自定义事件如何使广播出去的参数可修改(例如"DamageEvent"的data['damage'])
A:自定义事件可以自定义数据结构,可以像引擎定义的事件一样直接增加、删除和修改参数都可以

Q:8、在单一游戏帧处理过程中,事件的触发是在 update() 之前还是之后
A:同5

6

主题

14

回帖

12

积分

Lv.1 新手木匠

UID
744743
小麦
1
金锭
78
下界之星
0
6
 楼主| 发表于 2020-1-8 13:36:51 来自手机 | 只看该作者 IP:浙江
这下思路清晰多了,万分感谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部