[Unity] 애니메이션 클립에 스크립트를 추가한 후 해당 함수 오버라이딩하기2017. 1. 26. 20:22
애니메이션 클립에 스크립트를 추가한 후
해당 함수 오버라이딩하기
유니티에서 메카님을 사용할 경우 각 애니메이션에 따른 스크립팅을 해주고싶을 때가 있습니다.
그럴때 사용하는 방법으로는 해당 애니메이션에 스크립트를 넣어준 후, 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 |
'Engine > Unity' 카테고리의 다른 글
[Unity] 유니티 스크립트 함수 호출 순서 (0) | 2017.05.15 |
---|---|
[Unity] animator 메카님 사용 시, 발동된 Trigger 취소하기 (0) | 2017.03.06 |
[Unity/UI] Image Sprite 교체하기 (0) | 2016.12.02 |
유니티에 visual studio2013 연동하는 방법 (0) | 2016.09.01 |
[Unity] OnCollisionEnter 함수와 OnCollisionEnter2D 함수 차이 (0) | 2016.02.18 |