gamemaker吧 关注:13,690贴子:95,853
  • 7回复贴,共1

问一个GM8的房间问题。可不可以让两个房间里的实例同时保持运

只看楼主收藏回复

问一个GM8的房间问题。可不可以让两个房间里的实例同时保持运行?比如我第一个房间设置全局变量money,设置持续。在第二个房间的可见实例里设个时钟,不设持续,每分钟money增加100。这时我再切回第一个房间,但是money却不会再增加了。有没有什么办法让第一个房间继续增加,并且不让第二个房间的实例出现在第一个房间?


来自Android客户端1楼2020-04-29 12:32回复
    Q:可不可以让两个房间里的实例同时保持运行?
    A:不可以,只有“房间内存在的实例”才会执行相关动作。
    Q:比如我第一个房间设置全局变量money,设置持续。
    A:不可以,变量没有“持续”属性。但全局变量不会在房间切换时消失。
    Q:在第二个房间的可见实例里设个时钟,不设持续,每分钟money增加100。这时我再切回第一个房间,但是money却不会再增加了。
    A:理论上这里不单单是“不再增加”,而应该会“回到初始值”,除非你有些地方的描述与制作事实不符。
    Q:有没有什么办法让第一个房间继续增加,并且不让第二个房间的实例出现在第一个房间?
    A:只要A房间里有实例能确保global.money每分钟增加100,方法实在是太多了……不过我有几个问题要反问:
    RQ1:(目的/设计意图)money是在什么时间定义的初始值?
    RQ2:(目的/设计意图)money是在什么情况下自行增加,一开始就会还是进过房间2以后才会?
    RQ3:(目的/设计意图)money在什么情况下需要回到初始值?
    RQ4:(方法/架构)房间1和房间2存在较大的逻辑差异还是仅仅是地图编辑上的“地理位置”差异?//即是否考虑按单个房间来处理
    RQ5:(现状/BUG处理)如果是在房间1进行的初始化全局变量/生成某个持续的instance,每次从房间2回到房间1时是否会发生全局变量的值被重置/持续的instance数量增加?


    IP属地:北京2楼2020-04-29 15:07
    收起回复
      2025-12-29 23:54:07
      广告
      不感兴趣
      开通SVIP免广告
      楼上吧主大大已经回答不可以了。。
      不过,仔细看了下楼楼的问题,我猜测下你的目的,你是希望在特定房间内获得一个buff对吗?
      那么这种的常见做法是不是可以换个思路解决,直接把代码写在人物的object身上,通过判定当前所在房间来增加buff,
      比如
      if(当前房间 == 增加money的房间){
      timer += 1;
      if(timer == 3600){
      money += 100;
      timer = 0;
      }
      }


      IP属地:河南3楼2020-04-29 19:29
      收起回复
        嗯,知道两个房间的实例不可同时运行就好了。我的设置是这样的,在第一个房间里放一个不可见的实例,让它持续,命名全局变量money,并且把money的数值绘制在房间上方。然后设置一个按钮点击就会切换到第二个房间。第二个房间里放一个实例,每十秒增加50money,并且也设置按钮可以回到第一个房间。这样只要在第二个房间money每十秒就会增加50,切回第一个界面后,money不会回到初始值,但是也不会再增加。我现在明白了只有当前房间的实例会运行就可以了,我就麻烦点,给那个实例设置持续,让实例在第一个房间不可见在第二个房间可见。


        来自Android客户端4楼2020-04-30 18:39
        回复
          让两个房间的实例同时运行有一个很邪道的方法。
          给每一个实例都写上一个变量_room,用来保存它们所在的房间,在执行各种事件的时候如果当前房间不是那个房间的话就直接返回,并且全部都勾选保持。
          在碰撞啥的时候,检测_room不一样就不碰撞。(最好别使用默认的碰撞函数,会出大问题)
          不过鉴于这种方法特别麻烦,而且会导致有大量实例,所以想想就好。


          IP属地:广东5楼2020-04-30 19:13
          回复