본문 바로가기
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에 따라서 함수를 호출하면 깔끔하다.

'unity' 카테고리의 다른 글

coroutine  (0) 2022.07.09
0708  (0) 2022.07.08
이동.  (0) 2022.07.07
rigidbody, collider.  (0) 2022.07.06
에러_ (not found Tilemap)  (0) 2022.07.06