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

Project1

 找回密码
 注册会员
搜索

关于DataManager.save_game(1)无法生成存档文件的问题

查看数: 62 | 评论数: 3 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-11-1 00:25

正文摘要:

如图,一般使用这条指令会生成一个Save02.rvdata2文件 可是在加了Khas灯光脚本之后,再次使用同样的指令却无法生成文件。 因为我做的游戏不允许玩家自己存档,是到了特定的剧情由系统自动存档,于是便打算使用这 ...

回复

gqxastg 发表于 6 小时前
本帖最后由 gqxastg 于 2025-11-2 14:38 编辑

对的,就是用在事件的“脚本”指令里。
要是太长放不下的话可以这么做:

首先在“脚本编辑器”里新开一页插入以下代码:
RUBY 代码复制
  1. def save_game_khas_light(i)
  2.   $game_map.instance_eval do
  3.     bak1, bak2, bak3 = @lantern.bitmap, @light_surface, {}
  4.     @lantern.bitmap = @light_surface = nil
  5.     @light_sources.each do |e|
  6.       next unless light = e.instance_variable_get(:@light)
  7.       bak3[light], light.bitmap = light.bitmap, nil
  8.     end
  9.     DataManager.save_game(i) # 存档操作
  10.     @lantern.bitmap, @light_surface = bak1, bak2
  11.     bak3.each {|light, bmp| light.bitmap = bmp }
  12.   end
  13. end
然后就可以在事件的“脚本”指令里使用:
RUBY 代码复制
  1. save_game_khas_light(1)
即可
MIMOSHAL 发表于 7 小时前
gqxastg 发表于 2025-11-2 10:09
改用以下指令存档即可,简单测试了一下应该没问题。
$game_map.instance_eval do
  bak1, bak2, bak3 = @la ...

大佬,请问这段指令是用在事件的“脚本”里面吗?
我用VA的,脚本框完全用不了这段指令,貌似是位置不够?
gqxastg 发表于 11 小时前
本帖最后由 gqxastg 于 2025-11-2 10:11 编辑

改用以下指令存档即可,简单测试了一下应该没问题。
RUBY 代码复制
  1. $game_map.instance_eval do
  2.   bak1, bak2, bak3 = @lantern.bitmap, @light_surface, {}
  3.   @lantern.bitmap = @light_surface = nil
  4.   @light_sources.each do |e|
  5.     next unless light = e.instance_variable_get(:@light)
  6.     bak3[light], light.bitmap = light.bitmap, nil
  7.   end
  8.   DataManager.save_game(1) # 存档操作
  9.   @lantern.bitmap, @light_surface = bak1, bak2
  10.   bak3.each {|light, bmp| light.bitmap = bmp }
  11. end

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

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

GMT+8, 2025-11-2 21:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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