Project1

标题: RGSS PLAY已经停止工作,能看出是什么问题吗 [打印本页]

作者: yang1zhi    时间: 2017-7-25 00:10
标题: RGSS PLAY已经停止工作,能看出是什么问题吗
突然就弹出来,没有什么预警


作者: antilmid    时间: 2017-7-25 00:56
WIN7特有的故障,原因有很多,dll加载错误,软件不兼容,文件不在等内部消息都会引发,检查下是不是脚本兼容问题。
作者: guoxiaomi    时间: 2017-7-25 13:08
多半是dll的问题,可以试试在兼容模式下运行?我之前自己写了个dll,然后在win10下崩溃退出,用兼容模式反而可以运行= =
作者: fux2    时间: 2017-7-25 15:16
目前为止RM在无外部dll以及内存修改(包括黑科技脚本)的情况下会发生内存访问异常的只有sprite泄漏。
你的上一个场景,应该是地图场景把,新建了某个sprite然后经过Graphics.transition后没有释放,在win7以上的系统就会爆炸。
可以找你的程序员帮你检查,我这里有一段简易的排除方法,放在场景切换的时候就可以避免这个bug产生,但并不适用所有情况,还是让程序员仔细判断一下把。
  1. ObjectSpace.each_object do |obj|
  2.    if obj.is_a?(Sprite) && obj.disposed? == false
  3.       obj.dispose
  4.    end
  5. end
复制代码

作者: yang1zhi    时间: 2017-7-26 09:18
fux2 发表于 2017-7-25 15:16
目前为止RM在无外部dll以及内存修改(包括黑科技脚本)的情况下会发生内存访问异常的只有sprite泄漏。
你的 ...
  1. @text.bitmap.dispose
  2.        @text.bitmap = nil
  3.        @text.dispose
  4.        @text = nil   
复制代码

使用了你这个脚本后。脚本内这些=NIL的都报错了。
作者: fux2    时间: 2017-7-26 11:41
yang1zhi 发表于 2017-7-26 09:18
使用了你这个脚本后。脚本内这些=NIL的都报错了。

不懂手动GC,=nil是完全没有必要的
用了我这段代码sprite就会全部被释放,你这里还调用一次dispose不是重复了吗
要么删除原有的dispose,要么都加上disposed?的判断(最好还是检查哪里的sprite没释放




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1