查看: 2511|回复: 5

[已经解决] 请教在定义一个Class时def main 和 def initialize的区别

[复制链接]
梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
发表于 2021-8-17 06:30:29 | 显示全部楼层 |阅读模式

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

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

×
每次想写一个Class都不知道该怎么设计框架,def main里该放什么def initialize里该放什么也分不清楚,


还请大家指点一二,集思广益,多谢了!
梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2021-8-17 08:34:51 | 显示全部楼层
intialize 是初始化时会自动调用的方法,当执行 Xxxx.new 时,new 后面的参数会在构建对象的时候传递给 initialize。
例如:
[pre lang="Ruby"]class Foo
  def initialize(n)
    @n = n
  end
end[/pre]
调用 a = Foo.new(3),initialize 这个方法就自动被执行了一次,结果就是生成了一个对象 a 且里面有个实例变量 @n = 3

main 没什么特殊的,就是一个普通方法。在 RMXP 会看到很多 main 的定义只是因为每次切换场景的时候会调用 main 这个方法。换句话说,只有在定义场景类 Scene_Xxxx 的时候才需要定义一下 main,以便于 RGSS 系统调用。其他的类不需要定义。

你可以看下 Main 组脚本,会发现 main 方法的调用。顺便理解一下 RGSS 是怎么切换不同的场景的。

点评

好的,大神给个相关链接吧,你在b站上的视频(https://www.bilibili.com/video/BV1Es411S7my?p=2&spm_id_from=pageDriver)好像没有这方面的讲解啊。。  发表于 2021-8-17 18:02
回复

使用道具 举报

梦石
0
星屑
9160
在线时间
466 小时
注册时间
2015-5-8
回帖
704
 楼主| 发表于 2021-8-24 05:54:41 | 显示全部楼层
本帖最后由 taeckle 于 2021-8-24 16:46 编辑
RyanBern 发表于 2021-8-17 08:34
intialize 是初始化时会自动调用的方法,当执行 Xxxx.new 时,new 后面的参数会在构建对象的时候传递给 ini ...


大神请问下def initialize里面设置的东西是不是从游戏初始化的$game_system  = Game_System.new开始直到游戏结束只会运行1次啊?

点评

好的,多谢大神指点!  发表于 2021-8-25 18:08
是。  发表于 2021-8-25 02:09
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部