【研究】关于gm8实例事件执行顺序 / 选取绘制在上层的实例

默认分类·游戏开发笔记 · 2016-02-24 · 1694 人浏览
【研究】关于gm8实例事件执行顺序 / 选取绘制在上层的实例
看了B老师 @blovestorm 的文章
【论GameMakerStudio对象实例的执行顺序】
http://blog.sina.com.cn/s/blog_c4f9d4230102v9no.html
在实际操作过程中发现了一些问题,也就是在不断解散激活实例的过程中发生了一些问题

e4101ad7912397dd9555376a5e82b2b7d0a2875c

实例的事件并没有按照我的ID大小执行

新建两个对象,并在房间内放置多个实例,左侧数字为instance_id的所有元素
instance_id为一个全局数组,储存着游戏内所有实例的id

f9d8e136afc37931b5c52e47ecc4b74542a911d3

然后随机解散其中的一些实例并重新激活

5028aca1cd11728bcc24274ccffcc3cec3fd2c7f

将instance_id的所有元素以顺序形式绘制出来,发现实例id被打乱

7c375734970a304e5e9a0b94d6c8a786c8175cc8

img

中间的测试过程省略,根据测试发现,非draw事件的运行顺序和实例的id无关,和object_index与instance_id有关

  1. object_index越小的实例,事件执行越早
  2. 如果object_index一样,则根据instance_id的顺序执行

所以我个人认为gms的房间编辑器中,instance order顺序也是如此,object_index小的,排列顺序靠前,如果object_index一样,则在instance_id中靠前的实例,排列顺序靠前

img

2016-02-25 更新:如何在多个同深度实例重叠时,鼠标选取绘制在上层的实例

http://pan.baidu.com/s/1pKjdXrl
之前由于实例事件执行顺序理解不通,走了许多弯路(http://tieba.baidu.com/p/4372501528

用了实例解散,碰撞检测等,把重叠实例id都写进列表,写了二三十行代码才达到的效果,现在用了三四行就写出来了,个人感觉效果不错,特来分享下

img

Theme Jasmine by Kent Liao