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

Project1

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

[已经解决] 关于RGSS3的几个问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
646 小时
注册时间
2011-6-23
帖子
249
跳转到指定楼层
1
发表于 2015-2-15 12:36:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
先附上代码:
RUBY 代码复制
  1. def p(m)
  2.   msgbox(m)
  3. end
  4.  
  5. class A
  6.   def initialize(name,age)
  7.     @name = name
  8.     @age = age
  9.   end
  10.  
  11.   def name
  12.     @name
  13.   end
  14.  
  15.   def age
  16.     @age
  17.   end
  18.  
  19.   def name=(new_name)
  20.     @name = new_name
  21.   end
  22.  
  23.   def age=(new_age)
  24.     @age = new_age
  25.   end
  26. end
  27.  
  28. a = A.new('RC','⑨')
  29. p a.name
  30. p a.age
  31.  
  32. a.name = 'dora'
  33. a.age = 12
  34. p a.name
  35. p a.age


1.实例变量到底是什么鬼,是不是相当于普通的变量,只不过只能在类里面用
2.class A 里的 def name=(new_name) 、 def age=(new_age)是什么意思,能否用其他方法替代
请叫我RC君
某些过于XX的内容会用白字,所以请多多使用ctrl+a

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
3
发表于 2015-2-15 13:41:56 | 只看该作者
实例变量就是每个实例的变量啊。
就像人物的hp因为每个人物实例不同而不同。

实例变量有只读、只写、可读可写三种形式,name=就是让只读的变得可写。

点评

随随便便探探别人的空间来到RMVA提问区,果然现阶段对于脚本这种东东感到难以理解=e=  发表于 2015-2-19 01:45
事实上你调用 actor.hp= 方法的时候根本不应该想到实例变量。就像 sprite.visible = false 一样  发表于 2015-2-15 14:10
嗷,原来是这样,话说的确我也没懂为啥人物的hp那些要用attr_reader定义而不直接用attr_accessor  发表于 2015-2-15 14:07
况且,谁告诉你所有实例变量都能读的?我记得你已经犯过很多次这个错误了。实例变量在不做死的情况下,在对象外都是既不可读又不可写的  发表于 2015-2-15 14:01
默认脚本几乎都*不是*吧!能这么干的基本上都直接 attr_accessor 了,还要定义什么啊  发表于 2015-2-15 14:00
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21584
在线时间
9407 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

2
发表于 2015-2-15 13:40:24 | 只看该作者
本帖最后由 喵呜喵5 于 2015-2-15 14:00 编辑

1.实例变量和普通变量的区别:
  1. class A
  2.   def initialize(name,age)
  3.     @name = name
  4.     ages = age
  5.   end
  6.   def name
  7.     @name
  8.   end
  9.   def age
  10.     ages
  11.   end
  12. end

  13. a = A.new('RC','⑨')
  14. p a.name # => RC
  15. p a.age # => 报错
复制代码
你自己感受一下……

2. def name=(new_name) 、 def age=(new_age) 和其他def 一样,讨厌啦名字里多了一个等号你就不认识人家了嘛(*´∀`)

受不了面向对象的思考方式的话你完全可以把它们换成其他的东西,比如把 def name=(new_name) 换成 def happy_new_year(new_name)

但是,你觉得
  1. @主角.name = '埃里克'
复制代码
  1. @主角.happy_new_year('埃里克')
复制代码
哪个看得更舒服一些呢?

点评

好吧……其实我一直以为方法名只能有字母和下划线的说  发表于 2015-2-15 14:44
目测变成 SystemStackError: stack level too deep  发表于 2015-2-15 13:57
undefined local variable or method `v2' for #<A:0x00000002ee8700 @v1=123> (NameError)  发表于 2015-2-15 13:45

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-2 22:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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