Project1

标题: 关于CASE语句的疑问 [打印本页]

作者: weew163com    时间: 2016-12-18 23:55
标题: 关于CASE语句的疑问
想改显示文字的行数
于是找了很久脚本
然后试着把Window_Message第50行处的修改为了
RUBY 代码复制
  1. def visible_line_number
  2.     return 20
  3.   end



但是后来发现 改了这个是不能再改的
改成20 就不能再变
加上IF 或者case 也没用
有人知道怎么设置可以控制的文字行数吗

作者: QQ蚊子湯    时间: 2016-12-19 06:33
return 4 代表結束返回值4
所以你可以考慮用二元式判斷





或是後置式,這邊會從1號開關檢查到3號如果都不符會傳回最下面沒條件的 return 4


作者: RaidenInfinity    时间: 2016-12-19 09:45
讯息窗口在生成之后,大小是没那么容易随便改的。visible_line_number方法所返回的数值只供生成窗口时使用
你可以发现visible_line_number只有在initialize(类实例生成时所调用的一次性方法)内调用。

因此,我写了下面这个插件脚本:

RUBY 代码复制
  1. class Window_Message < Window_Base
  2.  
  3.   def resize_window(lines = 4)
  4.     return if lines <= 0
  5.     self.height = fitting_height(lines)
  6.     create_contents
  7.   end  
  8.  
  9. end
  10.  
  11. class Game_Interpreter
  12.  
  13.     def resize_message_window(lines = 4)
  14.         w = SceneManager.scene.instance_variable_get(:@message_window)
  15.         return if !w
  16.         w.resize_window(lines)
  17.         w.update_placement
  18.     end
  19.  
  20. end


我给Window_Message加了一个方法,叫做resize_window(重新定义大小),参数是想要的新行数。默认参数是4,这样的直接调用resize_window不附上参数也可以,直接就是默认值。
return if lines <= 0 如果新行数为零或负数就返回,避免之后出现什么巨大错误。(你也可以移除这行,到时就会报错,可能会更好修正)
self.height = fitting_height(lines) 这行你在initialize内有看到 super(0,0,window_width,window_height)而window_height的定义是fitting_height(visible_line_number),所以应该不难理解。
create_contents 就是重新生成内容区域(其实是个图片)。这是必要的,不然会出现框弄大了可是内容仍然小的问题。

定义了这个方法之后,问题就来了。怎么调用
如果你是有写别的脚本的,就记得调用这个新方法就是了。
如果是要从事件内透过脚本指令来调用…就在Game_Interpreter里面定义一个方法resize_message_window,参数也是那个样。
在Game_Interpreter里面所定义的方法可以直接被事件脚本指令调用。直接写 resize_message_window(20) 这样就行了。

w = SceneManager.scene.instance_variable_get(:@message_window) 这行是这么理解的:
SceneManager.scene是当前场景(不管是地图Scene_Map或者战斗Scene_Battle),instance_variable_get是一个黑科技方法,用于直接获取实例内的变量。:@message_window 就是指定要获取场景内讯息窗口的实例。
return if !w 如果窗口获取失败,得到的值是nil(空值),就返回,避免接下来的步骤出错。
w.resize_window(lines) 调用上面所说的,新定义的方法,调整显示的行数。
w.update_placement 调整窗口的坐标(可以去Window_Message看看定义),因为你调整了高度你总得把Y坐标给提高吧,不然?你移除这行试试看咯~

以上。脚本是很神奇的事物,建议阅读本区置顶的汉化版F1帮助文档内的脚本入门,然后阅读默认脚本内的绿色注释,至少要知道哪个方法是干啥的。

作者: weew163com    时间: 2016-12-19 10:29
RaidenInfinity 发表于 2016-12-19 09:45
讯息窗口在生成之后,大小是没那么容易随便改的。visible_line_number方法所返回的数值只供生成窗口时使用 ...

哦哦感谢(字有点多先回复了慢慢看w




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