【解決済】アクターのステートをエネミーに反映(処理速度の向上)
Posted: 2019年11月24日(日) 22:00
お世話になります。
戦闘でアクターVSアクターの処理を作成するため
戦闘前にアクターのステートをエネミーに反映させる以下のスクリプトを実装しました。
繰り返し処理(エネミーの数だけ実行){
繰り返し処理(Loopインデックス 0 ~ 1000){
if($gameActors.actor(アクターのNO).isStateAffected(Loopインデックス)){
$gameVariables.setValue(一時変数,$gameActors.actor(アクターのNO)._stateTurns[$gameVariables.value(Loopインデックス)]);
$gameTroop.members()[敵のNO].addState(Loopインデックス);
$gameTroop.members()[敵のNO]._stateTurns[Loopインデックス] = 一時変数;
}
}
}
しかし、処理が非常に遅く、戦闘が始まるまでに5~6秒かかってしまいます。
ステートのデータが多い(最大数1000を使用)、またエネミーが複数出現するのが原因ですが
なるべくステート数、エネミーの数を減らさずに対応したいと考えています。
アクターのステートをエネミーに一括でコピーする様な
短い時間でアクターのステートをエネミーに反映させる処理は存在しないでしょうか。
ご存知でしたら、教えていただきたいです。
よろしくお願いいたします。
戦闘でアクターVSアクターの処理を作成するため
戦闘前にアクターのステートをエネミーに反映させる以下のスクリプトを実装しました。
繰り返し処理(エネミーの数だけ実行){
繰り返し処理(Loopインデックス 0 ~ 1000){
if($gameActors.actor(アクターのNO).isStateAffected(Loopインデックス)){
$gameVariables.setValue(一時変数,$gameActors.actor(アクターのNO)._stateTurns[$gameVariables.value(Loopインデックス)]);
$gameTroop.members()[敵のNO].addState(Loopインデックス);
$gameTroop.members()[敵のNO]._stateTurns[Loopインデックス] = 一時変数;
}
}
}
しかし、処理が非常に遅く、戦闘が始まるまでに5~6秒かかってしまいます。
ステートのデータが多い(最大数1000を使用)、またエネミーが複数出現するのが原因ですが
なるべくステート数、エネミーの数を減らさずに対応したいと考えています。
アクターのステートをエネミーに一括でコピーする様な
短い時間でアクターのステートをエネミーに反映させる処理は存在しないでしょうか。
ご存知でしたら、教えていただきたいです。
よろしくお願いいたします。