2013年12月17日火曜日

UnityでAnimation Event中にSetActive(false)するとフリーズする

UnityにはAnimationとAnimatorってのがあります。
AnimationにはIsPlayingのような再生確認のメソッドが用意されてますけど、
Animatorのほうにはそれらしきものがないんですよね。
スプライトアニメーションを作っても、終了タイミングを検知する方法が
用意されてないようです。


このように、終了フレームのところに Add Event Function して
呼び出すことで、終了検知するようにしてみたのですが、
とんでもないことがおきました。


function End(){
 gameObject.SetActive(false);
}

追加した End() のなかでSetActive(false) を呼び出すと、いきなりUnityがフリーズするのです。
イベントによる関数呼び出し中にオブジェクト自身を停止するのが悪い、ってことなんでしょうけど
いきなりフリーズはないわ~。
エラーメッセージじゃなくてフリーズするせいで、原因特定にかなり時間がかかってしまいました。


function End(){
 Destroy(gameObject);
}

Destroyでは大丈夫。正常にオブジェクト破棄できました。

0 件のコメント:

コメントを投稿