Project1
标题: 使用脚本显示文字,怎么在一行显示完后再次执行 [打印本页]
作者: 契约师Vi 时间: 2023-2-11 22:53
标题: 使用脚本显示文字,怎么在一行显示完后再次执行
$game_temp.message_text = "你想要的文字"
$game_temp.message_text = "我不想要的文字"
使用事件指令,脚本框执行之后,第一行会被第二行文字,覆盖,直接显示"我不想要的文字"。第一行显示不出来。
我想要的效果是,显示了第一行文字,然后在,显示第二行文字。
作者: Cupidk爱呗茶 时间: 2023-2-12 03:54
本帖最后由 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
事件中
非事件中
作者: guoxiaomi 时间: 2023-2-12 10:21
本帖最后由 guoxiaomi 于 2023-2-12 10:25 编辑
建议用文字加强脚本来解决问题
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |