gamemaker吧 关注:13,651贴子:95,139
  • 4回复贴,共1

多个实例共享一个闹钟计数

只看楼主收藏回复

在战场上所有单位都需要闹钟实现射击、移动等,如果为每项功能都创建一个闹钟,会存在大量闹钟计数+1的情况。
有没有可能让多个实例共享一个闹钟计数,这样不论创建多少个闹钟,也只运行一次“闹钟计数 += 1;”
闹钟调用脚本函数
function iy_Alarm(){
return o_Ctrl1.image_index + NZ//要确保o_Ctrl1是唯一的
}
每个房间运行前都有一个控制类 o_Ctrl1 提前放入房间中
o_Ctrl1创建事件
//创建调用闹钟的多个Object2实例
var i=0; repeat (10) {
instance_create_layer(x + i * 32,y,layer,Object2)
i += 1
}
Object2创建事件
NZ = irandom_range(10,30)//闹钟步数
NZT = iy_Alarm()//闹钟检测
Object2绘制事件
if (o_Ctrl1.image_index == NZT) {
draw_circle(x,y,4,false)//闹钟测试执行代码
NZT = iy_Alarm()//循环闹钟
}
这是本人今天看《设计模式与游戏完美开发_蔡升达》得到的灵感。把灵感变成代码测试后,确实可行。欢迎广大吧友也试一试,例如:在Object2中再增加一个需要闹钟的功能,看看行不行?


IP属地:云南1楼2021-02-17 16:11回复
    注意 控制类 o_Ctrl1 不能设置精灵,它是不可见的


    IP属地:云南2楼2021-02-17 16:13
    回复
      U1S1,这个思路确实有意思。
      回忆了一下,咱的没有遇到过适用环境……要么是闹钟不该共用(比如扫雷的自动挖开区域扩散效果),要么是干脆“多实例”可以用单实例+数组+多重draw的假象来做。


      IP属地:北京3楼2021-02-18 09:29
      收起回复
        感谢糖大的评论、加精,我们这些老人会继续为贴吧努力!


        IP属地:云南4楼2021-02-18 11:29
        回复