Unity 2018.03 ScriptExecutionOrderを設定する
2019年1月3日
実はVTuber活動もこっそり続けているのですが、Unity2018.03にバージョンアップした際、プロジェクトがいろいろ壊れてしまいまして
ベースとなるシステムを1から再構築中でございます
その時にスクリプト実行順でハマったのでメモ
ScriptExecutionOrder
Unityが実行するスクリプトの実行順序を制御するための仕組みです
「Edit」>「Project Settings…」>「ScriptExecutionOrder」 でアクセス可能です
発生した症状
キャラクターの制御に「FInal IK」と 「Hair Designer」というコンポーネントを利用しています
Final IKで制御したキャラクターに、ファーの生成が追従しないという症状が発生しました
原因はスクリプト実行順だった
コンポーネントの再アタッチや、コンポーネントの順序変更などを試しても改善せず、原因を詳しく調査したところ、スクリプト実行順に原因があることが分かりました
こちらは失敗例
ファーを生成するスクリプト「HairDesigner」が、Final IKのコンポーネントよりも先に実行されるようになっています
その結果、 ファーが生成されてから、モデルが変形する という順序になっており、結果、モデルにファーが追従しませんでした
スクリプト実行順を変更
HairDesignerがFinal IKより後に実行されるようにしました (数字が大きいほど、あとに実行される)
結果、ちゃんとモデルの変形にファーが追従するようになりました
以上
普段あまりスクリプト実行順は意識することはありませんが、複数コンポーネントを利用するときは注意が必要ですね