查看: 1742|回复: 6

[已经解决] 我发现我跨地图移动会卡顿

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2014-4-19 22:41:09 | 显示全部楼层 |阅读模式

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

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

×
刚做了张野外的地图,还没设事件,就让村子和野外用场所移动通了起来。可是移动后会有一定时间卡顿。野外的卡的时间比有事件的村里还久那么一点点。
梦石
0
星屑
492
在线时间
908 小时
注册时间
2009-10-12
回帖
1702
发表于 2014-4-19 22:44:07 | 显示全部楼层
首先确认电脑配置【运行rm估计总行吧
然后看看是不是太多自动执行的公共事件
还有太长的脚本
或者太大地图

其余情况暂且没想到
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

 楼主| 发表于 2014-4-19 22:46:41 | 显示全部楼层
日月星辰 发表于 2014-4-19 22:44
首先确认电脑配置【运行rm估计总行吧
然后看看是不是太多自动执行的公共事件
还有太长的脚本

就是都不是你说的这些情况,我才想不通啊,野外图还没村子图大呢,还只画了图出来,事件还没设。公共事件总共也才一个,是显示对话框的。
回复

使用道具 举报

梦石
0
星屑
492
在线时间
908 小时
注册时间
2009-10-12
回帖
1702
发表于 2014-4-19 22:53:08 | 显示全部楼层
yang1zhi 发表于 2014-4-19 22:46
就是都不是你说的这些情况,我才想不通啊,野外图还没村子图大呢,还只画了图出来,事件还没设。公共事件 ...

介意放工程让别人测试吗? lz情况很少见啊。。
回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

 楼主| 发表于 2014-4-19 23:07:54 | 显示全部楼层
日月星辰 发表于 2014-4-19 22:53
介意放工程让别人测试吗? lz情况很少见啊。。

我又试了下,新建的图60X60的就算只放了草皮也会卡。减到30X30才不卡。不过30X30太小了。
我之前建的村子是100X50的也没这么卡。只有换地图时卡,其他时间不卡
回复

使用道具 举报

梦石
0
星屑
492
在线时间
908 小时
注册时间
2009-10-12
回帖
1702
发表于 2014-4-19 23:16:44 | 显示全部楼层
本帖最后由 日月星辰 于 2014-4-19 23:20 编辑
yang1zhi 发表于 2014-4-19 23:07
我又试了下,新建的图60X60的就算只放了草皮也会卡。减到30X30才不卡。不过30X30太小了。
我之前建的村子 ...


测试游戏时候按下f1看看有没有开平滑模式?那个也有可能导致卡  

不过反正不是制作上的技术问题啦,没事

还找到了一个防卡脚本。。造成卡的问题太复杂。。没效果那也没办法。。

[pre lang="ruby" line="1"]#======================================
# ■ Anti Event Lag Script
#======================================
#  By: Near Fantastica
#   Date: 12.06.05
#   Version: 3
#======================================
#======================================
# ■ Game_Map
#======================================
class Game_Map
  #--------------------------------------------------------------------------
  def in_range?(object)
    screne_x = $game_map.display_x
    screne_x -= 256
    screne_y = $game_map.display_y
    screne_y -= 256
    screne_width = $game_map.display_x
    screne_width += 2816
    screne_height = $game_map.display_y
    screne_height += 2176
    return false if object.real_x <= screne_x
    return false if object.real_x >= screne_width
    return false if object.real_y <= screne_y
    return false if object.real_y >= screne_height
    return true
  end
  #--------------------------------------------------------------------------
  def update
    if $game_map.need_refresh
      refresh
    end
    if @scroll_rest > 0
      distance = 2 ** @scroll_speed
      case @scroll_direction
      when 2
        scroll_down(distance)
      when 4
        scroll_left(distance)
      when 6   
        scroll_right(distance)
      when 8   
        scroll_up(distance)
      end
      @scroll_rest -= distance
    end
    for event in @events.values
      if in_range?(event) or event.trigger == 3 or event.trigger == 4
        event.update
      end
    end
    for common_event in @common_events.values
      common_event.update
    end
    @fog_ox -= @fog_sx / 8.0
    @fog_oy -= @fog_sy / 8.0
    if @fog_tone_duration >= 1
      d = @fog_tone_duration
      target = @fog_tone_target
      @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
      @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
      @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
      @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
      @fog_tone_duration -= 1
    end
    if @fog_opacity_duration >= 1
      d = @fog_opacity_duration
      @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
      @fog_opacity_duration -= 1
    end
  end
end
#======================================
# ■ Spriteset_Map
#======================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  def in_range?(object)
    screne_x = $game_map.display_x
    screne_x -= 256
    screne_y = $game_map.display_y
    screne_y -= 256
    screne_width = $game_map.display_x
    screne_width += 2816
    screne_height = $game_map.display_y
    screne_height += 2176
    return false if object.real_x <= screne_x
    return false if object.real_x >= screne_width
    return false if object.real_y <= screne_y
    return false if object.real_y >= screne_height
    return true
  end
  #--------------------------------------------------------------------------
  def update
    if @panorama_name != $game_map.panorama_name or
        @panorama_hue != $game_map.panorama_hue
      @panorama_name = $game_map.panorama_name
      @panorama_hue = $game_map.panorama_hue
      if @panorama.bitmap != nil
        @panorama.bitmap.dispose
        @panorama.bitmap = nil
      end
      if @panorama_name != ""
        @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
      end
      Graphics.frame_reset
    end
    if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
      @fog_name = $game_map.fog_name
      @fog_hue = $game_map.fog_hue
      if @fog.bitmap != nil
        @fog.bitmap.dispose
        @fog.bitmap = nil
      end
      if @fog_name != ""
        @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
      end
      Graphics.frame_reset
    end
    @tilemap.ox = $game_map.display_x / 4
    @tilemap.oy = $game_map.display_y / 4
    @tilemap.update
    @panorama.ox = $game_map.display_x / 8
    @panorama.oy = $game_map.display_y / 8
    @fog.zoom_x = $game_map.fog_zoom / 100.0
    @fog.zoom_y = $game_map.fog_zoom / 100.0
    @fog.opacity = $game_map.fog_opacity
    @fog.blend_type = $game_map.fog_blend_type
    @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
    @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
    @fog.tone = $game_map.fog_tone
    i=0
    for sprite in @character_sprites
      if sprite.character.is_a?(Game_Event)
        if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
          sprite.update
          i+=1
        end
      else
        sprite.update
        i+=1
      end
    end
    #p i
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.ox = $game_map.display_x / 4
    @weather.oy = $game_map.display_y / 4
    @weather.update
    for sprite in @picture_sprites
      sprite.update
    end
    @timer_sprite.update
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    @viewport3.color = $game_screen.flash_color
    @viewport1.update
    @viewport3.update
  end
end [/pre]

评分

参与人数 1星屑 +30 收起 理由
myownroc + 30 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

 楼主| 发表于 2014-4-19 23:22:50 | 显示全部楼层
日月星辰 发表于 2014-4-19 23:16
测试游戏时候按下f1看看有没有开平滑模式?那个也有可能导致卡  

不过反正不是制作上的技术问题啦,没事 ...

虽然没效果,不过还是谢谢了
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部