Project1

标题: 教程中“显示敌人的HP、SP百分比”会使游戏变慢? [打印本页]

作者: 比较傻的人    时间: 2008-1-22 02:16
标题: 教程中“显示敌人的HP、SP百分比”会使游戏变慢?
http://rpg.blue/web/htm/news220.htm
就是这个,选择攻击对象的时候游戏画面上方会出现敌人的血条。可是只要是出现血条的场合(不论攻击还是特技),选择的时候整个画面就会变慢。自己角色的明灭效果出现明显断断续续……敌人脚下的那个红-黄(默认皮肤)的三角指针也会变慢……

抱歉我是脚本菜鸟……如何解决这个变慢问题?谢谢! [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: superufo    时间: 2008-1-22 02:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: 比较傻的人    时间: 2008-1-22 02:43
可是它为什么会变慢呢?根本原因是什么?

顺便说一句,用另外一个版本的血条http://rpg.blue/web/shownews.asp?id=137 战斗血条 1.8改版,貌似就没有这个问题……

刷新间隔变慢?东西太多影响内存?还是……?
作者: 水迭澜    时间: 2008-1-22 03:13
刷新间隔不会变,主要是看算法问题。如果是比较复杂的渐变色血条而且默认每祯一直调用update重绘的话就会变慢。不过根据我的测试影响不大……看你的机子是什么了。
作者: 比较傻的人    时间: 2008-1-22 20:56
呃……那么用那个血条1.8版(就是细长的,红色和蓝色)为什么又会变得超快呢……我的机子问题……?
这个速度是由什么决定的?
作者: 幻耶    时间: 2008-1-22 21:05
1、Scene_Battle 1,234-238行:

       # 如果不是结束战斗回合的情况下
       if @phase != 5
         # 刷新状态窗口
         @status_window.refresh
       end

删了它!就是它造成很卡的。解释一句:这段的功能是刷新状态窗口,防止公共事件中我方减血后状态窗口没有更新出来。

2、不过这段又不能完全不要,否则我方用公共事件或遭到公共事件攻击的时候状态窗口会完全忘记刷新。所以把上面那段插到Scene_Battle 4的  def update_phase4_step6的比较靠下的敌方,变成如下:

def update_phase4_step6
   # 清除强制行动对像的战斗者
   $game_temp.forcing_battler = nil
   # 公共事件 ID 有效的情况下
   if @common_event_id > 0
     # 设置事件
     common_event = $data_common_events[@common_event_id]
     $game_system.battle_interpreter.setup(common_event.list, 0)
   end
   # 如果不是结束战斗回合的情况下
   if @phase != 5
     # 刷新状态窗口
     @status_window.refresh
   end
   # 移至步骤 1
   @phase4_step = 1
end

也就是说,公共事件执行结束后再刷新。这样把几百次刷新变为了1次,而效果相差很小。

经过测试,黑暗圣剑中的灵炮,在做此更改前后,帧速率由9提升至17。还不错。

其实有关优化的内容有很多,公共事件多了也会造成拖沓,这些倒是可以设法手动修改脚本减少拖沓。唯一比较恶心的是地图大了造成的拖沓无法挽回(因为那段代码没有公开在脚本中……) [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 比较傻的人    时间: 2008-1-22 23:44
怎么总觉得与我这个没什么关系……还是谢谢楼上!
嗯,减少了刷新次数。




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