Project1
标题:
请问:注释掉几行代码后显示错误
[打印本页]
作者:
kvkv97
时间:
2021-2-20 15:35
标题:
请问:注释掉几行代码后显示错误
注释掉Scene_Map中的几行代码
# unless $game_temp.player_transferring
# break
# end
后,为什么报错,显示没有 地图MAP00?为什么 场所移动要套用在Loop do结构中?
作者:
KB.Driver
时间:
2021-2-20 23:49
本帖最后由 KB.Driver 于 2021-2-21 11:14 编辑
XP的事件是直接开新线程(Thread),这里应该是为了同步动作而等待吧。
作者:
kvkv97
时间:
2021-2-21 15:40
谢谢两位了,但是还没解答我的疑惑!请高人解答。
作者:
enghao_lim
时间:
2021-2-21 16:26
我懒得打开XP来看,但是你也没直接给出错误内容,所以我只好用编程逻辑普遍拆测。
高几率你注释掉的代码之后的代码只有在$game_temp.player_transferring的情况下可以正常运行,你注释掉后导致代码缺乏了状况判定而在不应该执行的情况执行。
rmxp大多数的loop do结构都是为了画面更新运算,因为哪怕画面没有动作,可是其实背后画面也就在刷新。
作者:
hys111111
时间:
2021-2-21 19:24
本帖最后由 hys111111 于 2021-2-21 19:25 编辑
这里不应该注释掉的
场所移动事件需要$game_temp.player_transferring == true,但是只有$game_temp.player_transferring == false的时候会中断循环。
你注释掉的这里的下一行是transfer_player,也是执行场所移动事件,注释掉了之后就会一直执行场所移动这个动作。
因为通常情况下都是到这里跳出循环,除非在事件调用了场所移动才会进行下一步。
如果你没有在$scene = Scene_Map.new之前做任何场所移动的动作,$game_temp.player_new_map_id就是默认值0
接下来transfer_player下面的$game_map.setup($game_temp.player_new_map_id)里面,又会调用Game_Map下的@map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
这个时候,由于$game_temp.player_new_map_id的值是0,就找不到Map000.rxdata这个文件。
然后话说回来,就算找得到这个文件,你可能会因为不停地执行场所移动这个动作而卡住。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1