查看: 1277|回复: 7

如何把临时存放的角色特技的变量再代回来?

  [复制链接]
梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
发表于 2008-4-21 18:40:05 | 显示全部楼层 |阅读模式

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

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

×
变身前把角色当前学会的特技代入一个变量如下:
$temp_skills = $game_actors[1].skills


然后让该角色遗忘所有特技,添加变身后的特技:
for i in 1..130
$game_actors[1].forget_skill(i)
end


最后变身完毕恢复原样,如何让该角色学回原有的特技,让原来的 $temp_skills 代回来呢?
版务信息:本贴由楼主自主结贴~
囡囚囨囚囨図囨囧
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-6
回帖
55
发表于 2008-4-21 19:01:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2008-4-21 19:33:33 | 显示全部楼层
我测试的时候做了两个事件,事件1是暂存当前特技并且遗忘全部特技的脚本:
$temp_skills = $game_actors[1].skills
for i in 1..81
$game_actors[1].forget_skill(i)
end

事件2是学回以前的特技的脚本:
for i in $temp_skills
$game_actors[1].learn_skill(i)
end


然后我测试游戏,先点击事件1再点击事件2,结果遗忘的特技还是没有学回来
囡囚囨囚囨図囨囧
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2008-4-21 21:49:13 | 显示全部楼层
在Game_Actor脚本里把 attr_reader :skills改成attr_accessor :skills 也没用啊,遗忘了的特技就学不回来了
囡囚囨囚囨図囨囧
回复

使用道具 举报

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
回帖
2437

贵宾

发表于 2008-4-21 21:56:12 | 显示全部楼层
不是没有学回来   是这样只给数组赋值根本就学不回来
当时LZ发那这保存特技的贴时, 我就有回过
"直接给变量赋值数组是值引用吧    这样做对保持原数值无效吧?  好歹也要记录一份拷贝
"
原来那个贴的答案本身不够正确

从ruby的源代码可以看出, 非基本值类型的变量(虽然ruby没有), 赋值基本上都是引用,
因此做拷贝时, 还是老老实实的一个个赋值,或者用clone() 不要直接用等号
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2008-4-21 22:00:53 | 显示全部楼层
具体不知道怎么拷贝??赋值??请教请教。。。
囡囚囨囚囨図囨囧
回复

使用道具 举报

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
回帖
2437

贵宾

发表于 2008-4-21 22:23:57 | 显示全部楼层
$temp_skills = $game_actors[1].skills.clone
或者 $temp_skills = Array.new($game_actors[1].skills.size)
for i in $game_actors[1].skills.size
  $temp_skills = $game_actors[1].skills
end

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2008-4-21 22:27:21 | 显示全部楼层
多谢了!
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部