「EnDlEss DREamER」ブログ

最近はunity5メインで活動中。以前はツクールRGSSネタなど。

§ include?は重たいッ!!

多重ステート付加で処理がどうしても重たくて原因を探ってみると
どうにもRUBYの仕様と純正スクリプトの組み方が原因っぽい。

ダメージポップアップを使っているのでまっ先に疑ったのがスプライト周り。
でも、ポップアップスクリプトを抜いても重さが解消されない。

じゃあどこで重たいんだ??

ってことで、地道にpメソッド使って重たそうな場所を徐々に絞っていって
行き着いたのがGame_Battlerクラスのapply_state_changesメソッド。
そこから更にどこが重たいのか絞ってみると・・・・

add_stateメソッド

コイツが重たい原因だった。


記述をよく見てみると・・・
state_offset? と state_ignore? と sort_states が怪しい。
このメソッドたちは今のステートをeachしてそこから無視とか相殺ステートの解除ステート配列を
include?メソッドを使って毎回比較している。

このinclude?メソッドが重たい。

その後さらに ソートしている × 付加するステートの数
なので、追加するのにエライ重たい処理をしている。

ググれば Hash で代用すると軽くなるとかあるんだけど
純正スクリプトなので、勝手にHashに変えたら競合対策が果てしなく面倒。

さて、どうしようか・・・・・・


追記。


いろんなスクリプトをブチこみすぎてどこがどうなっていたのか
解明するのに苦労しましたが、無事解決しました♪

RGSS2のKGC様パッシヴスキルが原因だったようです。

restore_passive_revというメソッドの処理がかなり重たいようで
これをステートが付加or解除ごとに実行されていたので
多重ステートだと重たくなってしまったようです。


2012/10/22/Mon 13:53:42  VX RGSS2/CM:0/TB:0/
new RGSS2素材大量修正! / MAIN / 萌衣リポート old

COMMENT

COMMENT POST

/
/
/
/



 
 内緒です♪

TRACK BACK

  この記事のURL:
   http://edlogtkool.blog36.fc2.com/tb.php/889-168ad944


MAIN
copyright © 2006 「EnDlEss DREamER」ブログ. All Rights Reserved.
Template by TAE-3rd☆テンプレート工房