unity
state 패턴.
by kcj3054
2022. 7. 8.
- 애니메이션들은 형태가 굉장히 많은 데 그것을 모두 bool 값으로 관리하면서 if else를 두면 굉장히 더러워보인다. 이것을 깔끔하게 하기 위해서 상태를 enum값으로 두면 해당 상태에 맞는 함수를 호출하면 깔끔하다. state pattern이다.
예시
public enum PlayerState
{
Die,
Moving,
Idle,
Channeling,
Jumping,
Falling,
}
private PlayerState _state = PlayerState.Idle;
void UpdateIdle()
{
//애니메이션
wait_run_ratio = Mathf.Lerp(wait_run_ratio, 0, 10.0f * Time.deltaTime);
Animator anim = GetComponent<Animator>();
anim.Play("WAIT");
anim.SetFloat("wait_run_ratio", 0);
}
void Update()
{
switch (_state)
{
case PlayerState.Die:
UpdateDie();
break;
case PlayerState.Moving:
UpdateMoving();
break;
case PlayerState.Idle:
UpdateIdle();
break;
}
}
- switch 구문으로 해당 state에 따라서 함수를 호출하면 깔끔하다.