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

Project1

 找回密码
 注册会员
搜索
楼主: 松野栗
打印 上一主题 下一主题

[已经解决] 修改了存档界面样式(大概)之后,进游戏读档报错...

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2017-6-4
帖子
19
11
 楼主| 发表于 2017-7-4 22:59:37 | 只看该作者
rt6543ew 发表于 2017-7-4 22:16
建议把Scene_Load和Scene_Save发上来
或者重开游戏,进入初始人物所在地图之外的另一个地图,存档后再重开 ...

还是一样啊...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
78 小时
注册时间
2012-8-16
帖子
44
12
发表于 2017-7-4 23:10:21 | 只看该作者
在报错内容的前一行插一句 p $game_map ,进游戏读一下存档,错误提示窗口之前弹得窗显示的是nil吗,不是的话截个图可以吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2017-6-4
帖子
19
13
 楼主| 发表于 2017-7-4 23:12:59 | 只看该作者
rt6543ew 发表于 2017-7-4 23:10
在报错内容的前一行插一句 p $game_map ,进游戏读一下存档,错误提示窗口之前弹得窗显示的是nil吗,不是的 ...

对,就显示了个nil
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
78 小时
注册时间
2012-8-16
帖子
44
14
发表于 2017-7-4 23:36:09 | 只看该作者
1.再在Scene_Load中$game_map  = Marshal.load(file)后一行加p $game_map试试?
2.你发的那个Spriteset_Map真的修改过?

点评

实在不行你把工程发上来?  发表于 2017-7-4 23:39
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2017-6-4
帖子
19
15
 楼主| 发表于 2017-7-5 00:26:37 | 只看该作者
rt6543ew 发表于 2017-7-4 23:36
1.再在Scene_Load中$game_map  = Marshal.load(file)后一行加p $game_map试试?
2.你发的那个Spriteset_Map ...

1.这个,试了,跟之前无差...
2.这个,我还真没改x所以一个字没改它报错我很奇怪啊..
我马上吧工程发上来....谢谢啊辛苦了....
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2017-6-4
帖子
19
16
 楼主| 发表于 2017-7-5 00:30:10 | 只看该作者
工程文件在这..为方便把BR的对话框演示工程直接拿来改造了.......

project.zip

1.52 MB, 下载次数: 44

点评

说错了,不是Nil类,是NilClass类  发表于 2017-7-5 06:09
Nil类自然是没有tileset_name这个方法的  发表于 2017-7-5 06:03
而这时候没有使$game_map成为Game_map类的新实例,更没有读取存档文件中$game_map所对应的数据,导致$game_map此时是一个Nil类的对象  发表于 2017-7-5 06:02
Window_Help 12行的 @spriteset = Spriteset_Map.new不能用,因为在Save_File的初始化中就建立了一个Window_Help类的新实例  发表于 2017-7-5 05:58
都什么年代了怎么还在用1.01【喷水】  发表于 2017-7-5 05:09
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
78 小时
注册时间
2012-8-16
帖子
44
17
发表于 2017-7-5 06:07:42 | 只看该作者
松野栗 发表于 2017-7-5 00:30
工程文件在这..为方便把BR的对话框演示工程直接拿来改造了.......

解决方法,把Window_help类的initialize方法作如下修改
  1.   def initialize
  2.     if $game_map != nil
  3.     @spriteset = Spriteset_Map.new
  4.     end
  5.     super(0, 0, 128, 480)
  6.     self.contents = Bitmap.new(width - 32, height - 32)
  7.     self.back_opacity = 180
  8.    
  9.     if $game_map != nil
  10.     @spriteset.dispose
  11.     end
  12.   end
复制代码

点评

不过为什么要在这里写一行 @spriteset = Spriteset_Map.new?  发表于 2017-7-5 06:28

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
78 小时
注册时间
2012-8-16
帖子
44
18
发表于 2017-7-5 06:10:35 | 只看该作者
rt6543ew 发表于 2017-7-5 06:07
解决方法,把Window_help类的initialize方法作如下修改

但这个方法其实应该不算太好
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
152
在线时间
78 小时
注册时间
2012-8-16
帖子
44
19
发表于 2017-7-5 06:16:36 | 只看该作者
松野栗 发表于 2017-7-5 00:30
工程文件在这..为方便把BR的对话框演示工程直接拿来改造了.......

至于为什么新建游戏后返回标题再读档没有问题,是因为在新开一个游戏后
$game_map是一个有数据的Game_map类的对象,在返回标题画面时它好像没被做其他的处理
回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19334
在线时间
3077 小时
注册时间
2013-1-11
帖子
1288
20
发表于 2017-7-5 10:08:54 | 只看该作者
本帖最后由 张咚咚 于 2017-7-5 10:20 编辑

把Game_Help中的
@spriteset = Spriteset_Map.new
@spriteset.dispose
删掉,你为什么要在help中new一个Spriteser_Map出来。。。然后什么都不做。。。直接dispose掉。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 18:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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