Project1

标题: 新手通过脚本增加窗口,产生了对局部变量的疑问 [打印本页]

作者: 66rpgzuigao    时间: 2014-4-10 11:13
标题: 新手通过脚本增加窗口,产生了对局部变量的疑问
本帖最后由 66rpgzuigao 于 2014-4-11 23:20 编辑

看了@945127391大大的教程http://rpg.blue/thread-285650-1-1.html
非常感动,于是自己也仿写了一下。我的脚本如下
插入在这里
然后脚本内容是
RUBY 代码复制
  1. class Window_test < Window_Base
  2.  
  3.   def initialize
  4.     super(0,372,544,44)
  5.     @chuangkou1 = Window_Base.new(0,0,96,96)
  6.     refresh
  7.   end
  8.   def update
  9.     super
  10.     refresh
  11.   end
  12.   def refresh
  13.     self.contents.clear
  14.   end
  15. end

我希望能在平时界面保持两个窗口,左上角显示头像,下方显示各种状态。
但是
@chuangkou1 = Window_Base.new(0,0,96,96)
我之前用的并不是局部变量@chuangkou1,而是直接用的chuangkou1作为变量名
导致运行后,确实有这个窗口,但是过了几秒钟之后,就消失了...
于是我尝试把它变成局部变量,居然解决了消失的问题!
所以想问一下,这到底是为什么呢!求大大们指点迷津!感激不尽!
就这个问题,会衍生出什么比较常见的问题呢?比如变量、局部变量、常量还有那个@@的变量往往在游戏中最习惯扮演什么角色(起什么作用)?

QQ截图20140410110608.jpg (29.21 KB, 下载次数: 26)

QQ截图20140410110608.jpg

作者: 喵呜喵5    时间: 2014-4-10 11:20
本帖最后由 喵呜喵5 于 2014-4-10 11:22 编辑

加@ 的叫实例变量......
不加@ 的才叫局部变量......
局部变量顾名思义只在一定范围内有效,你这个例子中就只在def和end之间有效,因此对应的载入方法执行完后局部变量就被干掉了
两个@@ 的是类变量,具体用法懒得解释了,原生脚本中唯一用到的地方只有记录菜单界面的光标(存档界面返回菜单界面时光标还停在存档那里之类的),你自己感受一下,不过我觉得你还是先把前面两个搞懂了再说

顺便,update里无条件refresh真的大丈夫?
作者: 66rpgzuigao    时间: 2014-4-10 14:34
喵呜喵5 发表于 2014-4-10 11:20
加@ 的叫实例变量......
不加@ 的才叫局部变量......
局部变量顾名思义只在一定范围内有效,你这个例子中就 ...

感谢大大!
我再想想类变量是怎么回事
update无条件refresh有什么害处吗?完全不懂这个方法,我的猜想是保持刷新画面,对不对呢?

作者: 怪蜀黍    时间: 2014-4-10 14:40
66rpgzuigao 发表于 2014-4-10 14:34
感谢大大!
我再想想类变量是怎么回事
update无条件refresh有什么害处吗?完全不懂这个方法,我 ...

必要的时候再refresh,每帧都refresh不是增加运行负担吗?汝的refresh只有一句清空内容?
作者: 66rpgzuigao    时间: 2014-4-10 14:55
protosssonny 发表于 2014-4-10 14:40
必要的时候再refresh,每帧都refresh不是增加运行负担吗?汝的refresh只有一句清空内容? ...

原来必要的时候刷新就可以啦,感谢指导
恩,refresh里面只有一个清空,和那个教程里学的...只学到这些。
作者: 66rpgzuigao    时间: 2014-4-10 14:59
protosssonny 发表于 2014-4-10 14:40
必要的时候再refresh,每帧都refresh不是增加运行负担吗?汝的refresh只有一句清空内容? ...

您一说我想起来了!预制脚本中总会看见有句代码判断当前场景是否有变,有变则刷新!原来是做这个用的!
谢谢您!
作者: 喵呜喵5    时间: 2014-4-10 18:49
一般refresh方法都是用来描绘内容的,而描绘内容需要花掉大量的时间,不加判定条件一秒描绘60次整个游戏的运行速度会被拖垮一半

现在你连实例变量和局部变量都分不清和你讲类变量的话估计你也不懂......




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