StateMachineBehaviour はステートマシンのステートに追加できるコンポーネントです。ステートのすべてのスクリプトが継承する基底クラスでもあります。
通常、Animator はコントローラーで定義されるそれぞれのビヘイビアの新しいインスタンスをインスタンス化しません。クラス属性である SharedBetweenAnimatorsAttribute は、ビヘイビアがどのようにインスタンス化されるかを管理します。
StateMachineBehaviour has some predefined messages:
OnStateEnter, OnStateExit, OnStateIK, OnStateMove, OnStateUpdate.
using UnityEngine;
public class AttackBehaviour : StateMachineBehaviour { public GameObject particle; public float radius; public float power;
protected GameObject clone;
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { clone = Instantiate(particle, animator.rootPosition, Quaternion.identity) as GameObject; Rigidbody rb = clone.GetComponent<Rigidbody>(); rb.AddExplosionForce(power, animator.rootPosition, radius, 3.0f); }
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Destroy(clone); }
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log("On Attack Update "); }
override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log("On Attack Move "); }
override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log("On Attack IK "); } }
OnStateMachineEnter | Called on the first Update frame when making a transition to a state machine. This is not called when making a transition into a state machine sub-state. |
OnStateMachineExit | StateMachine からの移行を行うとき、最後の Update フレームが呼ばれます。StateMachine のサブステートの中へ移行を行うとき、これは呼び出されません。 |
OnStateEnter | Called on the first Update frame when a state machine evaluate this state. |
OnStateExit | Called on the last update frame when a state machine evaluate this state. |
OnStateIK | MonoBehaviour.OnAnimatorIK の直後に呼び出されます。 |
OnStateMove | MonoBehaviour.OnAnimatorMove の直後に呼び出されます。 |
OnStateUpdate | 最初と最後のフレームを除いて Update フレームごとに呼び出されます。 |
hideFlags | Should the object be hidden, saved with the Scene or modifiable by the user? |
name | オブジェクト名 |
GetInstanceID | オブジェクトのインスタンス ID を返します |
ToString | Returns the name of the GameObject. |
Destroy | ゲームオブジェクトやコンポーネント、アセットを削除します |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Do not destroy the target Object when loading a new Scene. |
FindObjectOfType | タイプ type から最初に見つけたアクティブのオブジェクトを返します |
FindObjectsOfType | タイプから見つけたすべてのアクティブのオブジェクト配列を返します |
Instantiate | original のオブジェクトをクローンします |
CreateInstance | ScriptableObject のインスタンスを作成します。 |
bool | オブジェクトが存在するかどうか |
operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.