Project1
标题:
如何保存自建窗口和自建全局变量?
[打印本页]
作者:
黄亦天
时间:
2011-1-20 23:10
标题:
如何保存自建窗口和自建全局变量?
本帖最后由 黄亦天 于 2011-1-22 18:24 编辑
我用这个方法自建了一个窗口
http://rpg.blue/thread-163500-1-1.html
但是存档后再读取就无效了……
如何才能让其保存到存档里?
另外我在事件脚本里将一个全局变量$aaa 带入了一个数值,如何才能将这个变量其保存到存档中?
黄亦天于2011-1-20 23:31补充以下内容:
另外想再问一下,如何判定这个窗口是否建立?
作者:
fux2
时间:
2011-1-21 07:34
回复
黄亦天
的帖子
scene_file定义很清楚了,要保存什么就自己dump啊.
def write_save_data(file)
characters = []
for actor in $game_party.members
characters.push([actor.character_name, actor.character_index])
end
$game_system.save_count += 1
$game_system.version_id = $data_system.version_id
@last_bgm = RPG::BGM::last
@last_bgs = RPG::BGS::last
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
Marshal.dump(@last_bgm, file)
Marshal.dump(@last_bgs, file)
Marshal.dump($game_system, file)
Marshal.dump($game_message, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
复制代码
窗口是否建立P一下不就知道了,判断是否为空
作者:
黄亦天
时间:
2011-1-21 13:12
回复
fux2
的帖子
感谢的说……
之前我改错地方了……
变量的保存已经没问题了……
可是这个窗口的保存还是没弄明白,试了好几次都失败了……
如果要保存这个窗口应该怎么写呢……
作者:
shua1125
时间:
2011-1-22 02:45
12小时了……
自顶一下……
作者:
雪流星
时间:
2011-1-22 03:06
其實最簡單的方法就是用系統變量來存
$game_variables[1] = 某數值或窗口等等...
作者:
fux2
时间:
2011-1-22 13:17
本帖最后由 fux2 于 2011-1-22 13:19 编辑
回复
shua1125
的帖子
$game_variables[1]保存窗口对象不行么?
你创建窗口总要有类似
@item = Window_Item.new这样的代码吧?
把@item这个对象传递给存档的方法或者用全局变量保存
$item = Window_Item.new
保存的时候再dump进去好了
这个窗口对象内的一切变量都会保存.(一般的)
作者:
亿万星辰
时间:
2011-1-22 13:53
窗口并不是保存的,窗口是重新生成的,你只要保证窗口里需要的数据都保存就好了。
作者:
黄亦天
时间:
2011-1-22 13:57
本帖最后由 黄亦天 于 2011-1-22 13:58 编辑
回复
fux2
的帖子
OTZ 我完全混乱了……
我在事件里是这么写的:
$t2t = 7200
复制代码
$t2x = -5 # X坐标
$t2y = -5 # Y坐标
size = 30 # 字号
$timer2 = Window_Base.new($t2x,$t2y,600,90)
$timer2.contents.font.size = size
$timer2.contents.font.name = "黑体"
R = 255
G = 174
B = 0
$timer2.contents.font.color=Color.new(R,G,B)
$timer2.opacity = 0
复制代码
然后开启开关1,执行并行事件
内容如下:
$t2 = "#{$t2t}帧"
$timer2.contents.clear
if $game_switches[2] == false
$timer2.contents.draw_text(0,0,550,35,$t2)
end
复制代码
我只知道该怎么保存$t2t这个变量,但是不知道该怎么保存这个窗口……
用系统变量的话,应该是替换掉什么呢……依旧是各种错误弹窗……
作者:
因幡·帝
时间:
2011-1-22 13:59
提示:
作者被禁止或删除 内容自动屏蔽
作者:
一箭烂YiJL
时间:
2011-1-22 18:16
嗯~上楼(八云?)说得对,不能储存物件的,
只能储存数据,不然出错。
新建一个自己用来储存数据的类,
$XXXXX = 那个类
再用实例变量,将数据记录下来,
最后就是在save。
然而,要读取时就要这样:
比如在Map里可以在可以修改Spriteset_Map的设置,
或者参考:
【强势更新!】计时器/秒标强及美化 v1.3 (多计时,顺倒数)
的做法,
话说最初弄成多计时器的时候,是用$game_system(Game_System)来储存活动块,
导致存档失误,于是把活动块改在Spriteset_Map和Spriteset_Battle里存放。
要不我给个那个无法存档的版本给你。
作者:
因幡·帝
时间:
2011-1-22 18:49
提示:
作者被禁止或删除 内容自动屏蔽
作者:
苏小脉
时间:
2011-1-22 23:35
回复
因幡·帝
的帖子
Window 有 Bitmap 类型的成员,因此。理论上这些 RGSS 对象都是可以序列化的,只要去定义一下 marshal_dump、marshal_load 或者 _dump、_load 等方法即可。柳之一以前提出的那个 Marshal Bitmap 的算法就是一切的基础。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1