前回、 Animation を動的に生成しましたが、 Controller の方はテンプレートでした。
今回はそこも C# Script から生成してみました。
ちなみに動機は同じですが仕様上不可能だと分かったので供養としておいておきます。
Animator Controller の生成自体も、基本は Animation を変わりません。
Controller のインスタンスを作っていじっていけば OK です。
var controller = new AnimatorController(); controller.AddParameter("ParameterId", AnimatorControllerParameterType.Int);
ただ、レイヤーなどを追加する場合は、それぞれのインスタンスを作ってから Add
を呼ぶのでは無く、 Add
を経由してから行ったほうが楽です。 (もろもろのデフォルト設定が適用されるため)。
// Layer 追加 controller.AddLayer("Base Layer"); var layer = controller.layers[0]; var stateMachine = layer.stateMachine; // State 追加 var state = stateMachine.AddState("State1"); // Transition 追加 var transition = stateMachine.AddAnyStateTransition(state); // Condition 追加はそのままで OK transition.AddCondition(AnimatorConditionMode.Equals, 1, "ParameterId");
このとき、一番最初に追加された State に対して、 Default State として設定されます。
あとは CreateAsset
で保存して上げれば、 Animator Controller が作成されます。
ということでメモでした。