Project1

标题: 地图并行处理动画循环会卡一下 [打印本页]

作者: 89444640    时间: 2017-9-21 19:30
标题: 地图并行处理动画循环会卡一下
在地图上建立事件,并行处理动画显示,用了突破显示的脚本后想很方便的做地图效果
https://rpg.blue/forum.php?mod=viewthread&tid=399194
因此拼合的动画文件较大640*480全屏60帧大小12.2M
在地图进行并行处理循环播放动画的时候总会卡一下,可能是图像载入造成的,请问有什么方法可以解决吗?

作者: Nil2011    时间: 2017-9-22 12:49
试一下这个脚本?


RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - Anti Animation Lag (v1.1) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]https://atelierrgss.wordpress.com/[/url]
  6. #==============================================================================
  7. # Este script remove as travadas (Lag) relacionadas ao dispose de uma animação.
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported[:mog_anti_animation_lag] = true
  12.  
  13. #===============================================================================
  14. # ■ Game_Temp
  15. #===============================================================================
  16. class Game_Temp
  17.   attr_accessor :animation_garbage
  18.  
  19.   #--------------------------------------------------------------------------
  20.   # ● Initialize
  21.   #--------------------------------------------------------------------------  
  22.   alias mog_anti_lag_animation_initialize initialize
  23.   def initialize
  24.       @animation_garbage = []
  25.       mog_anti_lag_animation_initialize
  26.   end  
  27.  
  28. end
  29.  
  30. #===============================================================================
  31. # ■ SceneManager
  32. #===============================================================================
  33. class << SceneManager
  34.  
  35.   #--------------------------------------------------------------------------
  36.   # ● Call
  37.   #--------------------------------------------------------------------------  
  38.   alias mog_anti_lag_animation_call call
  39.   def call(scene_class)
  40.       mog_anti_lag_animation_call(scene_class)
  41.       dispose_animation_garbage
  42.   end  
  43.  
  44.   #--------------------------------------------------------------------------
  45.   # ● Goto
  46.   #--------------------------------------------------------------------------   
  47.   alias mog_anti_lag_animation_goto goto
  48.   def goto(scene_class)
  49.       mog_anti_lag_animation_goto(scene_class)
  50.       dispose_animation_garbage
  51.   end
  52.  
  53.   #--------------------------------------------------------------------------
  54.   # ● Dispose Animation Garbage
  55.   #--------------------------------------------------------------------------  
  56.   def dispose_animation_garbage
  57.       return if $game_temp.animation_garbage == nil
  58.       $game_temp.animation_garbage.each do |sprite| sprite.dispose end
  59.       $game_temp.animation_garbage = nil
  60.   end  
  61.  
  62. end
  63.  
  64. #==============================================================================
  65. # ■ Game Map
  66. #==============================================================================
  67. class Game_Map
  68.  
  69.   #--------------------------------------------------------------------------
  70.   # ● Setup
  71.   #--------------------------------------------------------------------------   
  72.   alias mog_anti_lag_animation_setup setup
  73.   def setup(map_id)
  74.       SceneManager.dispose_animation_garbage
  75.       mog_anti_lag_animation_setup(map_id)
  76.   end
  77.  
  78. end
  79.  
  80. #==============================================================================
  81. # ■ Scene Base
  82. #==============================================================================
  83. class Scene_Base
  84.  
  85.   #--------------------------------------------------------------------------
  86.   # ● Terminate
  87.   #--------------------------------------------------------------------------      
  88.   alias mog_anti_lag_animation_terminate terminate
  89.   def terminate
  90.       mog_anti_lag_animation_terminate
  91.       SceneManager.dispose_animation_garbage
  92.   end
  93.  
  94. end
  95.  
  96. #==============================================================================
  97. # ■ Sprite Base
  98. #==============================================================================
  99. class Sprite_Base < Sprite  
  100.  
  101.   #--------------------------------------------------------------------------
  102.   # ● Dispose Animation
  103.   #--------------------------------------------------------------------------
  104.   def dispose_animation
  105.       execute_animation_garbage  
  106.   end
  107.  
  108.   #--------------------------------------------------------------------------
  109.   # ● Execute Animation Garbage
  110.   #--------------------------------------------------------------------------  
  111.   def execute_animation_garbage  
  112.       $game_temp.animation_garbage = [] if $game_temp.animation_garbage == nil
  113.       if @ani_bitmap1
  114.          @@_reference_count[@ani_bitmap1] -= 1
  115.          $game_temp.animation_garbage.push(@ani_bitmap1) if @@_reference_count[@ani_bitmap1] == 0
  116.       end
  117.       if @ani_bitmap2
  118.          @@_reference_count[@ani_bitmap2] -= 1
  119.          $game_temp.animation_garbage.push(@ani_bitmap2) if @@_reference_count[@ani_bitmap2] == 0
  120.      end
  121.      if @ani_sprites
  122.         @ani_sprites.each {|sprite| sprite.dispose }
  123.         @ani_sprites = nil ; @animation = nil
  124.      end
  125.      @ani_bitmap1 = nil ; @ani_bitmap2 = nil
  126.   end   
  127.  
  128. end

作者: 89444640    时间: 2017-9-22 13:52
这个运行时33行 nameerroe uninitialized comstant scencemanager 请问需要调节脚本哪里?




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