设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1722|回复: 6
打印 上一主题 下一主题

[已经解决] 新手通过脚本增加窗口,产生了对局部变量的疑问

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2014-4-8
帖子
10
跳转到指定楼层
1
发表于 2014-4-10 11:13:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 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, 下载次数: 22)

QQ截图20140410110608.jpg

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21484
在线时间
9389 小时
注册时间
2012-6-19
帖子
7114

开拓者短篇九导演组冠军

2
发表于 2014-4-10 11:20:53 | 只看该作者
本帖最后由 喵呜喵5 于 2014-4-10 11:22 编辑

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

顺便,update里无条件refresh真的大丈夫?

评分

参与人数 1星屑 +150 收起 理由
Sion + 150 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2014-4-8
帖子
10
3
 楼主| 发表于 2014-4-10 14:34:29 | 只看该作者
喵呜喵5 发表于 2014-4-10 11:20
加@ 的叫实例变量......
不加@ 的才叫局部变量......
局部变量顾名思义只在一定范围内有效,你这个例子中就 ...

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

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4629
在线时间
5237 小时
注册时间
2009-4-29
帖子
14318

贵宾

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

必要的时候再refresh,每帧都refresh不是增加运行负担吗?汝的refresh只有一句清空内容?
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2014-4-8
帖子
10
5
 楼主| 发表于 2014-4-10 14:55:41 | 只看该作者
protosssonny 发表于 2014-4-10 14:40
必要的时候再refresh,每帧都refresh不是增加运行负担吗?汝的refresh只有一句清空内容? ...

原来必要的时候刷新就可以啦,感谢指导
恩,refresh里面只有一个清空,和那个教程里学的...只学到这些。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2014-4-8
帖子
10
6
 楼主| 发表于 2014-4-10 14:59:51 | 只看该作者
protosssonny 发表于 2014-4-10 14:40
必要的时候再refresh,每帧都refresh不是增加运行负担吗?汝的refresh只有一句清空内容? ...

您一说我想起来了!预制脚本中总会看见有句代码判断当前场景是否有变,有变则刷新!原来是做这个用的!
谢谢您!

点评

好极了,汝开窍了~  发表于 2014-4-10 18:50
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21484
在线时间
9389 小时
注册时间
2012-6-19
帖子
7114

开拓者短篇九导演组冠军

7
发表于 2014-4-10 18:49:59 | 只看该作者
一般refresh方法都是用来描绘内容的,而描绘内容需要花掉大量的时间,不加判定条件一秒描绘60次整个游戏的运行速度会被拖垮一半

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-25 05:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表