Project1
标题:
如何把临时存放的角色特技的变量再代回来?
[打印本页]
作者:
幻耶
时间:
2008-4-21 18:40
标题:
如何把临时存放的角色特技的变量再代回来?
变身前把角色当前学会的特技代入一个变量如下:
$temp_skills = $game_actors[1].skills
然后让该角色遗忘所有特技,添加变身后的特技:
for i in 1..130
$game_actors[1].forget_skill(i)
end
最后变身完毕恢复原样,如何让该角色学回原有的特技,让原来的 $temp_skills 代回来呢? [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
沉影
时间:
2008-4-21 19:01
提示:
作者被禁止或删除 内容自动屏蔽
作者:
幻耶
时间:
2008-4-21 19: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,结果遗忘的特技还是没有学回来
作者:
幻耶
时间:
2008-4-21 21:49
在Game_Actor脚本里把 attr_reader :skills改成attr_accessor :skills 也没用啊,遗忘了的特技就学不回来了
作者:
link006007
时间:
2008-4-21 21:56
不是没有学回来 是这样只给数组赋值根本就学不回来
当时LZ发那这保存特技的贴时, 我就有回过
"直接给变量赋值数组是值引用吧 这样做对保持原数值无效吧? 好歹也要记录一份拷贝
"
原来那个贴的答案本身不够正确
从ruby的源代码可以看出, 非基本值类型的变量(虽然ruby没有), 赋值基本上都是引用,
因此做拷贝时, 还是老老实实的一个个赋值,或者用clone() 不要直接用等号
作者:
幻耶
时间:
2008-4-21 22:00
具体不知道怎么拷贝??赋值??请教请教。。。
作者:
link006007
时间:
2008-4-21 22:23
$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
[LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者:
幻耶
时间:
2008-4-21 22:27
多谢了!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1