gms2魔幻if代码块,求解
gamemaker吧
全部回复
仅看楼主
level 15
sunyubokkkkk 楼主
昨天写着好好的,突然游戏就不按预期运行了,检查了半天代码,似乎没发现哪有逻辑问题,然后debugger步进运行,结果发现这:
无论怎么都会直接蹦到26行这里,很奇怪。
尝试过以下方法:
1. 一开始有些单行if没有加大括号,后来如图里加入了大括号,问题依然存在;
2. 尝试过多次清理工程重新编译,问题依旧;
3. 将第26行注释,结果是会直接跳到第25行。
有没有哪位大佬知道是怎么回事的,是不是我代码还是有问题?还是说编译器的问题?还需要我提供哪些信息?谢谢!
2020年04月20日 12点04分 1
level 7
魔幻
还有这种操作
2020年04月20日 12点04分 2
level 7
建议这一段代码删了,换个地方重新写一遍
魔幻的解决方案增加了
2020年04月21日 04点04分 4
可以哈哈
2020年04月22日 08点04分
level 14
恭喜你发现了GMS2的编译器新BUG。提交YOYO公司,获赠永久旗舰版gamemaker1.0一套。
2020年04月22日 00点04分 5
[滑稽][滑稽]血赚血赚
2020年04月22日 08点04分
吧务
level 13
图1,17判断true,执行19没问题,突然跳转26很迷。
图2,一扫而过但23应该判断是false,依然迷之跳转26。
感觉像是26被识别为“在括号外”,没想到什么能保证解决问题的方法,只能提供“如果咱遇到这个问题的话会怎么处理”。
0、把这段代码复制到在线格式整理工具里,整理一下
1、在代码复制出去的情况下,清空这段代码,编译运行一次
2、把整理好格式的代码复制回来,运行看效果
也许以后教育新人“补齐括号”的时候,这件事可以搬出来举例。“不加括号导致的逻辑混乱,可能你加完括号以后,编辑器也识别不出来”
2020年04月22日 05点04分 6
谢谢糖豆大大,我去试试
2020年04月22日 08点04分
吧务
level 13
刚刚试了试,这里的106行会无视前边的判断条件直接执行。
如果我的截图区域小一点(或者多敲点空格),大家会无法看到105行后边的那点神奇小玩意
如果我做GIF的话,光标不会在105行停留。
2020年04月22日 05点04分 7
可惜解释不了“3. 将第26行注释,结果是会直接跳到第25行。”
2020年04月22日 05点04分
level 15
sunyubokkkkk 楼主
问题解决了。首先感谢各位的帮助!
出问题的地方有两个,我和调试器都出了问题。
1. 我的代码bug:在另一个object的begin step事件,有一个地方我给这个target变量赋值noone了,但对于我的游戏这个逻辑不对,它应该只执行一次而不是每帧执行一次。因此我的游戏没有按预期运行。
2. gms2调试器的bug:26行其实并没有意外地执行。当我把26行注释,或者换成别的语句(例如25行的输出调试信息),调试器也会显示步进到这一句,但实际上并未执行(输出窗口没有任何输出)。我修正begin step的逻辑错误之后,游戏完全按照预期运行了,但是在图里同样地方下断点,步进,调试器还是会无条件跳到26行,虽然26行并未实际执行。
----------
所以概括一下,最后结论是,编译器没有问题,大括号也没有问题,是我代码逻辑出错,但是debugger的bug导致我找到我代码问题的过程走了弯路。
2020年04月22日 16点04分 8
1