Game !


 

애니메이션 클립에 스크립트를 추가한 후 

해당 함수 오버라이딩하기






유니티에서 메카님을 사용할 경우 각 애니메이션에 따른 스크립팅을 해주고싶을 때가 있습니다.


그럴때 사용하는 방법으로는 해당 애니메이션에 스크립트를 넣어준 후, StateMachineBehaviour 클래스를 상속받으면 됩니다.




1
2
3
4
5
6
7
using UnityEngine;
using System.Collections;
 
public class CTextAnimScript : StateMachineBehaviour
{
    
}
cs




해당 방식으로 사용할 수 잇으며, 5개의 오버라이딩 함수들이 있다.

보통 아래 3개의 함수를 가장 많이 사용한다.


함수 정리 참고 : https://docs.unity3d.com/kr/current/ScriptReference/StateMachineBehaviour.html




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using UnityEngine;
using System.Collections;
 
public class CTextAnimScript : StateMachineBehaviour
{
    public override void OnStateEnter(Animator animator, 
                                    AnimatorStateInfo stateInfo, 
                                    int layerIndex)
    {
        // code...
    }
 
    public override void OnStateUpdate(Animator animator, 
                                    AnimatorStateInfo stateInfo, 
                                    int layerIndex)
    {
        // code...
    }
 
    public override void OnStateExit(Animator animator, 
                                    AnimatorStateInfo stateInfo, 
                                    int layerIndex)
    {
        // code...
    }
}
cs




OnStateEnter() 함수는 해당 애니메이션이 실행된 후 첫 프레임 때 호출됩니다.


OnStateUpdate() 함수는 첫 번째와 마지막을 제외한 모든 프레임 때 호출됩니다.


OnStateExit() 함수는 마지막 프레임에서 호출됩니다.






예제 )


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using UnityEngine;
using System.Collections;
 
public class CTextAnimScript : StateMachineBehaviour
{
 
    public TestPlayerScript test_;    
 
    public override void OnStateEnter(Animator animator, 
                                    AnimatorStateInfo stateInfo, 
                                    int layerIndex)
    {
        if(test_ == null)
        {
            test_ = animator.gameObject.GetComponent<TestPlayerScript>();
        }
    }
}
cs