本帖最后由 Cupidk爱呗茶 于 2023-2-12 13:15 编辑
如果是在事件脚本中可以用
脚本1: $game_temp.message_text = "你想要的文字" @message_waiting = true $game_temp.message_proc = Proc.new { @message_waiting = false } 脚本2: $game_temp.message_text = "你想要的文字2"
脚本1:
$game_temp.message_text = "你想要的文字"
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
脚本2:
$game_temp.message_text = "你想要的文字2"
这也是RMXP默认系统留下的用法 (ps 记得分成两条 每条事件指令都会更新阻塞 写在一起赋值会被覆盖)
大体含义为@message_waiting为true的时候默认系统会无限等待用户输入 使得让我们后面的代码延后执行 Proc.new用来修改用户输入完成后@message_waiting的数值 用来判断是否可以结束阻塞状态
不是事件中执行的话因为没有自带的解释器阻塞 直接赋值代码写在一起无论如何都会被覆盖 所以就需要实现我们自己的阻塞命令 原理和事件中的执行也算是差不多的
$game_temp.message_text = "你想要的文字" switch = true $game_temp.message_proc = Proc.new { switch = false } while(switch) do Graphics.update ; Input.update ; $scene.update end $game_temp.message_text = "你想要的文字2"
$game_temp.message_text = "你想要的文字"
switch = true
$game_temp.message_proc = Proc.new { switch = false }
while(switch) do Graphics.update ; Input.update ; $scene.update end
$game_temp.message_text = "你想要的文字2"
最后使用时可以进行简单的包装
# 作用于事件 class Interpreter def _message(msg) # _message("你想要的文字") @message_waiting = true $game_temp.message_text = msg $game_temp.message_proc = Proc.new { @message_waiting = false } end end # 作用于非事件全局使用 当前场景必须拥有Window_Message.new class Game_Temp def message_show(msg) #$game_temp.message_show("你想要的文字") @message_text = msg ; switch = true @message_proc = Proc.new { switch = false } while(switch) do Graphics.update ; Input.update ; $scene.update end end end
# 作用于事件
class Interpreter
def _message(msg) # _message("你想要的文字")
@message_waiting = true
$game_temp.message_text = msg
$game_temp.message_proc = Proc.new { @message_waiting = false }
end
end
# 作用于非事件全局使用 当前场景必须拥有Window_Message.new
class Game_Temp
def message_show(msg) #$game_temp.message_show("你想要的文字")
@message_text = msg ; switch = true
@message_proc = Proc.new { switch = false }
while(switch) do Graphics.update ; Input.update ; $scene.update end
end
end
事件中
非事件中
|