アニメータコントローラは、State Machine(ステートマシン)でレイヤーを通じてアニメーションを制御します。また、パラメータによって制御されます。
using UnityEngine; using UnityEditor; using UnityEditor.Animations; using System.Collections;
// Create a menu item that causes a new controller and statemachine to be created.
public class SM : MonoBehaviour { [MenuItem("MyMenu/Create Controller")] static void CreateController() { // Creates the controller var controller = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath("Assets/Mecanim/StateMachineTransitions.controller");
// Add parameters controller.AddParameter("TransitionNow", AnimatorControllerParameterType.Trigger); controller.AddParameter("Reset", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoB1", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoC", AnimatorControllerParameterType.Trigger);
// Add StateMachines var rootStateMachine = controller.layers[0].stateMachine; var stateMachineA = rootStateMachine.AddStateMachine("smA"); var stateMachineB = rootStateMachine.AddStateMachine("smB"); var stateMachineC = stateMachineB.AddStateMachine("smC");
// Add States var stateA1 = stateMachineA.AddState("stateA1"); var stateB1 = stateMachineB.AddState("stateB1"); var stateB2 = stateMachineB.AddState("stateB2"); stateMachineC.AddState("stateC1"); var stateC2 = stateMachineC.AddState("stateC2"); // don’t add an entry transition, should entry to state by default
// Add Transitions var exitTransition = stateA1.AddExitTransition(); exitTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransition.duration = 0;
var resetTransition = stateMachineA.AddAnyStateTransition(stateA1); resetTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "Reset"); resetTransition.duration = 0;
var transitionB1 = stateMachineB.AddEntryTransition(stateB1); transitionB1.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoB1"); stateMachineB.AddEntryTransition(stateB2); stateMachineC.defaultState = stateC2; var exitTransitionC2 = stateC2.AddExitTransition(); exitTransitionC2.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransitionC2.duration = 0;
var stateMachineTransition = rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineC); stateMachineTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoC"); rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineB); } }
layers | コントローラーのレイヤー |
parameters | パラメータは、スクリプトとコントローラー間の通信に使われます。例えば、それらはドライブを制御するためやブレンドツリーに使われます。 |
AnimatorController | コンストラクター |
AddEffectiveStateMachineBehaviour | layerIndex のレイヤーにある AnimatorState に stateMachineBehaviourType クラス型の State Machine Behaviour をアタッチします。この機能は、同期したレイヤーを扱うときに使用されます。また、同期したレイヤーに State Machine Behaviour 加えたいときにも使用されます。C# ユーザーは Generic 版を使用できます。 |
AddLayer | レイヤーをコントローラーに加えるためのユーティリティ関数です。 |
AddMotion | Motion に対する新しいステートを作成するユーティリティ機能です。 |
AddParameter | コントローラーにパラメーターを追加するためのユーティリティ機能です。 |
CreateBlendTreeInController | 新しい AnimatorState にブレンドツリー(BlendTree)を作成します。 |
GetBehaviours | T 型にマッチする、または T 型派生のすべての StateMachineBehaviour を返します。 |
GetStateEffectiveBehaviours | アニメーターのステート(AnimatorState)に効果的なステートマシンの振る舞い(Behaviour)リストを取得します。振る舞いは、アニメーターのステートマシン(AnimatorStateMachine )内かアニメーターレイヤーのオーバーライド(ovverride)内のいずれかで格納されます。効果的に使える振る舞い(Behaviour)リストを取得するために、この機能を使用します。 |
GetStateEffectiveMotion | アニメーターのステートのために効果的に Motion(動作)を取得します。Motion(動作)はアニメーターのステートマシン(AnimatorStateMachine)かアニメーターレイヤーのオーバーライド(ovverride)モードで格納されます。効果的に使える Motion(動作)を取得するために、この機能を使用します。 |
MakeUniqueLayerName | ユニークなレイヤー名を作成します。 |
MakeUniqueParameterName | ユニークなパラメータ名を作成します。 |
RemoveLayer | コントローラーからレイヤーを削除するためのユーティリティ機能です。 |
RemoveParameter | コントローラーからパラメーターを削除するためのユーティリティ機能です。 |
SetStateEffectiveBehaviours | アニメーターのステート(AnimatorState)に効果的なステートマシンの振る舞い(Behaviour)リストを設定します。振る舞いリストは、アニメーターのステートマシン(AnimatorStateMachine)内かアニメーターレイヤーのオーバーライド(ovverride)内のいずれかで格納されます。効果的に使える振る舞い(Behaviour)リストを設定するために、この機能を使用します。 |
SetStateEffectiveMotion | アニメーターのステートのために効果的な Motion(動作)を設定します。Motion(動作)はアニメーターのステートマシン(AnimatorStateMachine)かアニメーターレイヤーのオーバーライド(ovverride)モードで格納されます。効果的に使える Motion(動作)を設定するために、この機能を使用します。 |
CreateAnimatorControllerAtPath | 与えられたパスを使用してアニメータコントローラ(AnimatorController)を作成します。 |
CreateAnimatorControllerAtPathWithClip | 指定されたパスでアニメータコントローラー(AnimatorController)を作成し、アニメーションクリップ(AnimationClip)でステートを加える機能を持つアニメータのステートマシン(AnimatorStateMachine)を使用し自動的にアニメータのレイヤーを作成します。 |
CreateStateMachineBehaviour | この機能は、スクリプトで定義するクラスに基づいて StateMachineBehaviour のインスタンスを作成します。 |
FindStateMachineBehaviourContext | この振る舞い(動作)のオーナーを検索するために、この機能を使用します。 |
hideFlags | オブジェクトは非表示、シーンに保存、ユーザーが編集可能、などを設定する。 |
name | オブジェクト名 |
animationClips | コントローラーで使用しているすべての AnimationClip を取得します。 |
GetInstanceID | オブジェクトのインスタンス ID を返します |
ToString | ゲームオブジェクトの名前を返します |
Destroy | ゲームオブジェクトやコンポーネント、アセットを削除します |
DestroyImmediate | オブジェクト obj を破棄します。 |
DontDestroyOnLoad | 新しいシーンを読み込んでもオブジェクトが自動で破壊されないように設定します |
FindObjectOfType | タイプ type から最初に見つけたアクティブのオブジェクトを返します |
FindObjectsOfType | タイプから見つけたすべてのアクティブのオブジェクト配列を返します |
Instantiate | original のオブジェクトをクローンします |
bool | オブジェクトが存在するかどうか |
operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |