Project1

标题: 求站上的小地图脚本优化方法 [打印本页]

作者: 水迭澜    时间: 2008-3-8 00:03
标题: 求站上的小地图脚本优化方法
RT,用的是这个
http://rpg.blue/web/htm/news294.htm
一打开,FPS会立刻卡掉8~10
(我做的是ARPG,80X120大小的地图……)
大概看了看,好象是因为是全部都刷新的结果,相当于有两个地图在跑= =
其实我已经修改过一点了,改成只有它可见的时候才refresh……(先前不可见的时候也刷新,不知道作者怎么想的orz)

现在是希望能修改一下它事件的刷新方式,不显示出来的事件不刷新
跟这个脚本原理类似
http://rpg.blue/web/htm/news366.htm


大概就这样吧……

P。S 大概研究下自己也能改……只是最近脑残的厉害,不想想了……
回答的同学不用改脚本,说说卡的原因和修改思路就可以~ [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~
作者: 禾西    时间: 2008-3-8 00:29
說實話,完全沒有頭緒(知力下降)
估計這裏可能會是根本:
   for event in $game_map.events.values
     @mini_sprites.push(Sprite_Mini_Character.new(@viewport, @zoom, 1 , event))
   end        
   for sprite in @mini_sprites
     sprite.update
   end

更新地圖上所有事件的圖象(計算他們的zoom率,類型,描繪圖片)。
但是確定類型那裏用了一個很笨的循环(他居然從頭開始檢查事件中開頭以下的每一行語句==|||,直到找到自己想要的語句爲止。)

就是這句:
     for i in [email protected]
       if @character.list.parameters[0].is_a?(String)
         if @character.list.parameters[0] == "event"
           @type = 4
           break
         elsif @character.list.parameters[0] == "savepoint"
           @type = 5
           break
         elsif @character.list.parameters[0] == "teleport"
           @type = 6
           break
         elsif @character.list.parameters[0] == "chest"
           @type = 7
           break
         elsif @character.list.parameters[0] == "enemy"
           @type = 1
           break
         elsif @character.list.parameters[0] == "allied"
           @type = 2
           break
         end
       end
     end      
沒有測試,不知道將會花費多少時間於一件40行字數的事件當中。
不過估計消耗不少。


如果可以,最好事件的顯示去掉咩~
不然可以用小圖標代替事件畫面。
原本的事件描畫真是有够天兵……==|||
[LINE]1,#dddddd[/LINE]系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
作者: 水迭澜    时间: 2008-3-8 01:32
这个脚本就是用小图标代替事件的
但不知道为什么,即使在完全不显示事件图标的时候仍然很慢~{/gg}
作者: 水迭澜    时间: 2008-3-8 02:07
哦哦……原来是这里,等我看看~~~抱LS之




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