Project1

标题: 能够在游戏进程中可以导入脚本吗? [打印本页]

作者: 文雅夕露    时间: 2018-3-13 23:58
标题: 能够在游戏进程中可以导入脚本吗?
事由源自:https://rpg.blue/thread-406053-1-1.html

既然能在游戏进程中将脚本导出,那相对而言,导入应该可以做到吗?
就是在游戏进程中的某个阶段导入位于工程目录中的txt脚本文档到main脚本之上。
从而实现开启某些复杂的改动。
就比如:默认战斗的效果跳转到全动画的战斗效果。
用开关的判断实在很繁琐,所以想用外部的这种手段,不知道可否实现?
作者: 芯☆淡茹水    时间: 2018-3-14 07:21
  1. def test
  2.   p 1
  3. end
  4. script = "def test; p 2 ; end"
  5. test  #=> 1
复制代码

  1. def test
  2.   p 1
  3. end
  4. script = "def test; p 2 ; end"
  5. eval(script)
  6. test  #=> 2
复制代码


这样?

作者: guoxiaomi    时间: 2018-3-14 12:30
  1. $:<< Dir.getwd # 根目录作为脚本载入的目录
复制代码
  1. load 'script.rb' # 载入根目录下的 script.rb
复制代码

但是不建议这么做,你可以让全动画脚本继承在 Scene_Battle 下,或者引入 module 来做……
作者: fux2    时间: 2018-3-14 12:41
txt的话必须得用UTF8保存,不过还是尽量不要出现中文。
除了楼上的方法以外,可以用最简单的读文本内容+eval的方法去执行

  1. def eval_file(fn)
  2.   eval(File.open(fn).read)
  3. end
复制代码


插入以上方法,使用
  1. eval_file("test.txt")
复制代码

就能执行游戏目录的test.txt里的ruby代码
作者: 文雅夕露    时间: 2018-3-14 20:14
fux2 发表于 2018-3-14 12:41
txt的话必须得用UTF8保存,不过还是尽量不要出现中文。
除了楼上的方法以外,可以用最简单的读文本内容+eva ...

谢谢管理员前辈的回答。
可是有几点疑问...
一是使用def eval_file(fn)这段脚本后,
再运行eval_file("test.txt")会出现语法问题。
这是txt文档的问题还是其他问题呢?
二是,如果置入txt文档的脚本代码,它的优先级是?
会覆盖或者重定义其他的脚本内容吗?
还是单纯的执行?
作者: 白魔导师宝儿    时间: 2018-3-16 18:03
在游戏里改变战斗模式吗?开关是麻烦但很好用。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1