查看: 3511|回复: 0

[推荐问答] 【自问答】解决人物跟随脚本的卡顿问题

[复制链接]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-3-17 23:27:07 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 guoxiaomi 于 2017-3-18 01:41 编辑

(随处可见的)XP人物跟随脚本,会在重新进入 Scene_Map 的时候卡顿一帧(闪烁),只显示主角不显示跟随的人物,因为此时尚未更新跟随人物的 Sprite,然后调用 update 方法后才会显示跟随人物。

由于图像是从无到有,即使是 1 帧,也能被重度强迫症患者觉察到。

实际上有一个巧妙的方法来解决。按照上面所说的卡顿的原因,只要在调用 update 一次以后再执行画面过渡就好了。

请看修改后的 Scene_Map 的 main 方法的第 11 行:

为什么刷新了输入,因为从 Scene_Menu 退回到 Scene_Map 的时候,是按 X 键退回,如果不刷新按键的话,执行 update 时就会回到 Scene_Menu ……

[pre lang="ruby"]class Scene_Map
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 生成活动块
    @spriteset = Spriteset_Map.new
    # 生成信息窗口
    @message_window = Window_Message.new
    # 刷新输入和画面(解决人物跟随卡顿)
    Input.update
    update
    # 执行过渡
    Graphics.transition   
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放活动块
    @spriteset.dispose
    # 释放信息窗口
    @message_window.dispose
    # 标题画面切换中的情况下
    if $scene.is_a?(Scene_Title)
      # 淡入淡出画面
      Graphics.transition
      Graphics.freeze
    end
  end
end[/pre]

本来想问这个问题的,看来我果然不适合伸手……

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 醋瞎

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部