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

Project1

 找回密码
 注册会员
搜索
查看: 1019|回复: 0
打印 上一主题 下一主题

检测未释放的对象

[复制链接]

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

跳转到指定楼层
1
发表于 2014-8-2 20:07:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● require Taroxd基础设置
  3. #--------------------------------------------------------------------------
  4.  
  5. class Viewport
  6.   def_before(:dispose) { @__dispose__ = true }
  7.   def disposed?; @__dispose__; end
  8. end
  9.  
  10. need_dispose = [Bitmap, Sprite, Window, Plane, Tilemap, Viewport]
  11. callers = {}
  12. callers.compare_by_identity
  13. not_disposed = []
  14.  
  15. need_dispose.each do |klass|
  16.   klass.class_eval do
  17.     def_after(:initialize) {|*| callers[self] = caller }
  18.   end
  19. end
  20.  
  21. Scene_Base.class_eval do
  22.   def_after :terminate do
  23.     need_dispose.each do |klass|
  24.       ObjectSpace.each_object(klass) do |obj|
  25.         not_disposed.push(obj) unless obj.disposed?
  26.       end
  27.     end
  28.   end
  29.  
  30.   def_after :update do
  31.     return unless Input.trigger?(:ALT)
  32.     puts not_disposed.delete_if(&:disposed?)
  33.     puts callers[
  34.       not_disposed.shuffle.find do |obj|
  35.         callers[obj] && callers[obj].none? {|str| str.start_with?('{0004}') }
  36.       end
  37.     ]
  38.   end
  39. end
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-5-1 16:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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