查看: 2812|回复: 6

[已经过期] 怎么建立一个公共的变量?

[复制链接]
梦石
0
星屑
50
在线时间
130 小时
注册时间
2008-8-12
回帖
117
发表于 2014-9-23 15:34:50 | 显示全部楼层 |阅读模式

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

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

×
比如建立一个变量 $ss,游戏中赋值 $ss = 9 ,保存为存档1。然后进入新游戏或者读取存档2,能判断出 $ss 变量的值依然是9
Tomorrow
梦石
0
星屑
50
在线时间
320 小时
注册时间
2014-9-2
回帖
244
发表于 2014-9-23 17:12:30 | 显示全部楼层
核心代码


存储
Marshal.dump($ss, file)


读取
$ss = Marshal.load(file)

点评

这样的话,退出关闭再开始新游戏就不继承变量了吧?  发表于 2014-9-24 09:12
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-9-23 19:55:00 | 显示全部楼层
本帖最后由 RyanBern 于 2014-9-26 08:56 编辑

公共变量放在了一个单独的文件中储存,发生改变的时候就即时存档。
在游戏中$game_common_variables表示公共变量,可以像$game_variables一样使用。
未测试。缺点就是如果文件被删除,内容就要重置。
在Scene_Title中载入数据库的后面加上这个:
[pre lang="Ruby"]unless FileTest.exist?("CommonVar.rxdata")
  $game_common_variables = load_data("CommonVar.rxdata")
else
  $game_common_variables = Game_CommonVariables.new
end[/pre]
下面这个新建一个脚本插入即可:
[pre lang="Ruby"]class Game_CommonVariables
  def initialize
    @data = {}
  end
  def [](id)
    @data[id] == nil ? 0 : @data[id]
  end
  def []=(id, val)
    @data[id] = val
    filename = "CommonVar.rxdata"
    file = File.open(filename, "wb")
    Marshal.dump($game_common_variables, file)
    file.close
  end
end[/pre]
回复

使用道具 举报

梦石
0
星屑
50
在线时间
206 小时
注册时间
2014-2-8
回帖
378
发表于 2014-9-23 20:53:12 | 显示全部楼层
本帖最后由 573932914 于 2014-9-23 20:54 编辑

存档时建立文件,文件名字就用变量的数值,读档后再判断名字←←
刚接触RPG的新人们裤艾来这里!在这里能够帮助你们提高自身的能力,让大家来帮助每个人实现自己的创意、构想!
也许你只是正在看RPG教程的新人,或者是正在努力学着制作自己的RPG的制作者,或者是狂热的RPG游戏喜爱者,
但都不重要!
加入我们,我们会帮助你实现梦想,或者帮助你更好的运用RPG并且创造个人的一片天地!周末我们会不定时间开放RM技术讨论活动或者RM经验交流课!
加入我们,我们愿意与你共同创造奇迹,共同进步!
QQ群号:329443038  
或者联系QQ:573932914
我们和你站在同一线!
要求只有:常能上线
我们会用十分的热情接纳你!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
130 小时
注册时间
2008-8-12
回帖
117
 楼主| 发表于 2014-9-24 08:11:57 | 显示全部楼层
RyanBern 发表于 2014-9-23 19:55
首先这个公共的变量是不是要随时保存(即只要发生了变化就保存)?还是只有特定情况才保存(比方说存档了) ...

如果我要保存的变量比较多,比如大概有三十多个,需要随时保存,用什么方法比较好?

点评

3L已经编辑  发表于 2014-9-26 08:58
Tomorrow
回复

使用道具 举报

梦石
0
星屑
50
在线时间
320 小时
注册时间
2014-9-2
回帖
244
发表于 2014-9-24 12:29:58 | 显示全部楼层
那就选30+个ID放变量

点评

重定义 Game_Variables#[]= 比较好 参见楼下  发表于 2014-9-24 12:43
随时存就要修改Graphics.update  发表于 2014-9-24 12:32
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-9-24 12:38:00 | 显示全部楼层
兔毛鹿 发表于 2014-9-24 08:11
如果我要保存的变量比较多,比如大概有三十多个,需要随时保存,用什么方法比较好? ...

1.
如果我要保存的变量比较多,比如大概有三十多个

建立一个 变量id -> 值 的哈希表,dump 到外部文件

2.
需要随时保存

重定义 Game_Variables#[]= (我不清楚XP,但这样应该可以。如果是VA的话可以重定义 on_change),使得变量每次改变的时候都存档
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部