2016年12月2日金曜日

手動リセットする手段が無いスクリプトで複数ステートをまたぐ場合 onrezが無いと死ぬ

ものすごい具体的には

特定の変数をリセットしたくないがイニシャライズだけは通したい みたいな場合な

現状でinit みたいな初期設定ステートがあり
そっから mode1 mode2みたいな分岐の仕方するやつ

resetってステート作って一端全部そこに飛ばしてから initを通す場合

reset自体に state_entryしかない場合

resetに飛んでstate_entryが始まる前にtakeやdetachされると

state_entryが破棄されて 再び装着やrezをしても

resetのステートから抜ける手段が存在しないために
その状態でスクリプトがデッドロックになる

対策は
全部のステートに何らかの形でonrezイベントなりattachイベントを入れて
そっちで正常系の作動をするように修正することとなる

今更こんなとこで引っかかるやついないだろと思うんだけど

まぁ引っかかってしまった当事者なので記録とする

以上

0 件のコメント:

コメントを投稿