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

Project1

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

[已经解决] 请教大家一个class的名称.new到底是啥意思, 有啥用途呐?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9143
在线时间
464 小时
注册时间
2015-5-8
帖子
865
跳转到指定楼层
1
发表于 2021-6-16 06:01:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如在公共脚本里经常能看到$scene = Scene_一个class的名称.new
请问下这个Scene_一个class的名称.new到底是啥意思呐?

Lv4.逐梦者

梦石
0
星屑
11574
在线时间
982 小时
注册时间
2019-11-5
帖子
2402

极短24参与

2
发表于 2021-6-16 07:59:46 | 只看该作者
本帖最后由 哇哇哇啊叭叭 于 2021-6-16 03:08 编辑

终于有个自己会的问题了:

  Xxx.new指新建实例,可以视为“某段脚本生效”的标志。要准确理解它的涵义,需要知道“类”和“实例”的定义
  在Xxx.new之前,必须有“Class Xxx”和其对应的"end",这表示“Xxx”这个“类”被定义,相当于盖楼有了张蓝图
  Xxx.new就是大楼了,在Ruby里是“实例”;一个类可以有多个实例,为方便调用,就以“$Xxx_x=Xxx.mew”、“$Xxx_x2=Xxx.new”等方式区分这些实例。“$”+"Xxx_xx"的格式是“全局变量”的固定格式,在此不多赘述了

举个栗子

评分

参与人数 2星屑 +50 +2 收起 理由
RyanBern + 50 + 1 精品文章
taeckle + 1 多谢大神指点!

查看全部评分

风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

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

开拓者短篇九导演组冠军

3
发表于 2021-6-16 18:09:56 | 只看该作者
进入战斗,敌人是两个史莱姆,史莱姆A和史莱姆B

史莱姆A的属性和技能和史莱姆B一模一样,
=> 他们属于同一个史莱姆“类(class)”

你攻击了史莱姆A,史莱姆A的血变少了,史莱姆B 虽然和史莱姆A一样都属于史莱姆,但是它的 HP 不会因为你攻击史莱姆A而变少
=> 他们是史莱姆类下各自独立的一个“实例”

这时候,第三个史莱姆C出现了
=> 通过 class.new 创建对应类的一个实例,例如 史莱姆C = 史莱姆.new

点评

咱问的这些技术都是最基本最基本的啦,对诸位大神来说都是小菜一碟  发表于 2021-6-17 03:28
每次都能在这种技术性帖子里看到你和zths大佬的身影,赞  发表于 2021-6-16 23:46
大神可以把这个史莱姆ABC的例子的代码写出来让咱学习学习吗,多谢了  发表于 2021-6-16 19:45

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 认可答案
taeckle + 1 大神的指引!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9143
在线时间
464 小时
注册时间
2015-5-8
帖子
865
4
 楼主| 发表于 2021-6-16 23:05:56 | 只看该作者
哇哇哇啊叭叭 发表于 2021-6-16 07:59
终于有个自己会的问题了:

  Xxx.new指新建实例,可以视为“某段脚本生效”的标志。要准确理解它 ...

请问下在这个例子里$Xxx_x和$Xxx_x2有啥区别呢?不都是被Xxx.new赋值的嘛?为什么要搞一个$Xxx_x然后再搞一个$Xxx_x2出来呢?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1268
在线时间
166 小时
注册时间
2021-5-29
帖子
82
5
发表于 2021-6-17 10:35:50 | 只看该作者
本帖最后由 Swanfal 于 2021-6-17 10:43 编辑
taeckle 发表于 2021-6-16 23:05
请问下在这个例子里$Xxx_x和$Xxx_x2有啥区别呢?不都是被Xxx.new赋值的嘛?为什么要搞一个$Xxx_x然后再搞 ...


你需要学习OOP基础,如https://www.cnblogs.com/qianduanshiping/p/6096053.html……
本来就是两个不同的对象,当然要重新创建一个变量去接收了
就好象两个史莱姆A和B是两个不同的对象,攻击A就应当只影响史莱姆A的血量,而不能攻击A的时候把B的血也扣了。
实际使用的时候比如$SlimeA.Damage(20)代表史莱姆A扣了20血,$SlimeB.Damage(20)代表史莱姆B扣了20血这样

评分

参与人数 2星屑 +50 +2 收起 理由
RyanBern + 50 + 1 我很赞同
taeckle + 1 精品文章

查看全部评分

教你一个在任何 Discuz! 论坛的网页版里屏蔽别人的通用方法(谷歌火狐内核浏览器适用):
安装uBlock,在静态屏蔽规则里写上
rpg.blue##tr:has-text()
##前面是域名,括号内为需要屏蔽的id。随手写的规则,未测试各种边界条件,有兴趣可以自己修改验证。出现bug请尝试关闭插件。
已屏蔽id:清澈淌漾
打造清新简洁的信息茧房,获取快乐的论坛体验,从屏蔽拉黑开始。
看不顺眼,就大力屏蔽!让他再也不要出现在你的视线内!也欢迎各位屏蔽我。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
11574
在线时间
982 小时
注册时间
2019-11-5
帖子
2402

极短24参与

6
发表于 2021-6-17 11:30:48 | 只看该作者
taeckle 发表于 2021-6-16 18:05
请问下在这个例子里$Xxx_x和$Xxx_x2有啥区别呢?不都是被Xxx.new赋值的嘛?为什么要搞一个$Xxx_x然后再搞 ...

  也不是不可以,就是太麻烦。5楼说的对。

  若游戏需要出现多个同蓝图的不同实例,就必须使用不同变量进行区分;入:$1 = Sword.new,$2 = Sword.new,这样能够保证$1在变化时,并不影响$2的状态
  用$1=Sword1.new , $2=Sword2.new ...(class Sword1 等同于class Sword2、class Sword3、class Sword4...)这样也可以,就是太浪费了


评分

参与人数 1+1 收起 理由
taeckle + 1 精品文章

查看全部评分

风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3301
在线时间
277 小时
注册时间
2019-4-23
帖子
202
7
发表于 2021-6-17 11:39:58 | 只看该作者
class是模版
new class是实体

评分

参与人数 1+1 收起 理由
taeckle + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

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

开拓者短篇九导演组冠军

8
发表于 2021-6-17 22:36:06 | 只看该作者
喵呜喵5 发表于 2021-6-16 18:09
进入战斗,敌人是两个史莱姆,史莱姆A和史莱姆B

史莱姆A的属性和技能和史莱姆B一模一样,

RUBY 代码复制
  1. class Slime
  2.   def appear   
  3.     @hp = 100
  4.     print("野生的史莱姆跳出来了")
  5.   end
  6.   def status
  7.     print("史莱姆当前的hp是#{@hp}")
  8.   end
  9.   def attack
  10.     print("史莱姆向你发起了攻击")
  11.   end
  12.   def damage
  13.     @hp -= 5
  14.     print("你攻击了史莱姆,造成了5点伤害")
  15.   end
  16. end
  17.  
  18. a = Slime.new
  19. b = Slime.new
  20.  
  21. a.appear
  22. b.appear
  23.  
  24. a.attack
  25. b.attack
  26.  
  27. a.status
  28. b.status
  29.  
  30. a.damage
  31.  
  32. a.status
  33. b.status
  34.  
  35. c = Slime.new
  36. c.appear
  37. c.attack
  38. c.status
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 13:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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