Unity 함수정리 feat.코루틴 #004

주환서·2026년 2월 22일
post-thumbnail

함수정리

이때까지 작은 프로젝트를 하면서 썼던 함수들을 정리 해보려고 합니다.

  1. 생명주기
    Awake(): 오브젝트가 처음 켜질 때 단 한 번 실행.
    Start(): Awake 직후, 첫 Update가 실행되기 전에 단 한 번 실행.
    Update(): 게임 실행 동안 매 프레임 반복해서 실행.

  2. 충돌 이벤트
    OnCollision(Exit,Stay,Enter)(): 물리적으로 오브젝트와 부딪히는 순간 실행.

  3. 게임 오브젝트와 컴포넌트 제어
    GetComponent<T>(): T 컴포넌트를 찾아서 가져옴.
    CompareTag(string): 태그가 입력한 문자열과 같은지 검사.
    GameObject.FindGameObjectWithTag(string): 해당 태그를 가진 오브젝트를 찾아옴.
    Instantiate(Object, position, rotation): 프리팹으로 만든 객체를 찍어냄.
    Destroy(Object): 오브젝트를 씬에서 완전히 파괴하고 메모리에서 삭제시킴.
    SetActive(bool): 오브젝트를 파괴하지 않고 눈에 보이게 하거나 안 보이게 함.

  4. 트랜스폼
    transform.Translate(Vector3): 오브젝트를 지정된 방향과 거리만큼 순간이동 시킴.
    transform.Rotate(Vector3): 오브젝트를 지정된 축을 기준으로 회전시킴.
    Vector3.zero, Vector3.one: 각각 (0, 0, 0)과 (1, 1, 1)을 의미.
    Vector3.forward, Vector3.right, Vector3.up: 각각 앞, 오른쪽, 위쪽을 가르키는 방향 벡터.
    Vector3.Distance(a, b): a와 b 사이의 실제 거리
    .normalized: 벡터의 방향은 유지하고 크키를 1로 만들어줌. 순수 방향만 필요할 때 씀.
    Quaternion.LookRotation(Vector3): 목표 방향을 바라보게 회전.
    Quaternion.Slerp(a, b, t): 현재 회전값 a에서 목표 회전값 b까지 부드럽게 회전시킴.

  5. 입력 및 시간
    Input.GetAxis(string): 축 입력을 받음. 키보드를 꾹 누르고 있으면 0에서 1까지 서서히 부드럽게 값이 올라가고 내려감.
    Time.deltaTime: 프레임 간의 걸리는 시간. 성능이 다른 컴퓨터에서도 똑같은 거리와 똑같은 시간으로 이동하게 만들어줌.
    Cursor.lockState = CursorLockMode.Locked: 마우스 커서를 화면 중앙에 안보이게 고정시켜줌.

  6. 물리
    Rigidbody.AddForce(Vector3, ForceMode): 오브젝트에 물리적인 힘을 가함.
    Rigidbody.linearVelocity, angularVelocity: 물체가 날아가는 직선 속도와 팽이처럼 도는 회전 속도.

  7. 애니메이션
    Animator.StringToHash(string): 애니메이터 파라미터 이름을 유니티 내부에서 쓰는 고유 번호로 바꿔줌. 문자열로 계속 검색하는 것 보다 숫자로 찾는 게 컴퓨터 입장에서 훨씬 빠르고 최적화에 좋음.
    SetBool, SetFloat, SetTrigger: 애니메이터 파라미터 변수의 값을 바꿔줌.

  8. 구조
    List<GameObject>: 동적 배열. 크기가 늘었다 줄었다함.
    [SerializeField]: 직렬화. private 변수지만 유니티 에디터 내부에서 값을 수정 할 수 있게 해줌.

  9. 기타
    Random.Range(min, max): 최소값과 최대값 사이의 무작위 숫자를 뽑음.
    SceneManager.GetActiveScene().name: 현재 실행 중인 씬을 문자열로 가져옴.
    CinemachineCamera.Priority: 카메라의 시점 값. 숫자가 높으면 우선순위가 높음.(카메라를 높은쪽으로 가져옴)
    CinemachineImpulseSource.GenerateImpulse(): 카메라에 강한 흔들림을 발생시킴.

코루틴

코루틴이란

  1. 유니티에서 원하는 시점에 일시 정지를 하고 다시 시작할 수 있는 함수.
  2. 일반함수와 코루틴의 차이
  • 일반 함수: 호출되면 return 될 때 까지 한 번에 실행됩니다.
  • 코루틴: yield return 될 때 실행을 멈추고 유니티의 다음 프레임으로 넘어갑니다. 게임은 계속 돌아가고 조건이 만족되면 멈췄던 부분부터 다시 실행합니다.

관련 코드

IEnumerator, yield return: 함수의 실행을 잠시 멈췄다가, 다음 프레임이나 일정 시간 후에 이어서 실행하게 해주는 기능.
yield return null: 1프레임 쉬고 다음 프레임에 이어 실행.
yield return new WaitForSeconds(float): 지정한 시간만큼 코드를 멈춤.
yield break: 함수의 return과 같음. 코루틴을 그 자리에서 즉시 종료.
StartCoroutine(), StopCoroutine(): 코루틴을 시작하고 중단시키는 함수. FSM상태가 꼬이지 않게 Stop해줘야함.

코루틴을 쓰는 이유는?

  1. 가독성
  • Update문에서 타이머 변수를 만들고 초를 잴 필요가 없습니다. 그냥 yield return new WaitForSeconds(2f) 한 줄이면 됩니다.
  1. 성능 최적화
  • 매 프레임 체크할 필요가 없는 로직을 코루틴에 넣고 정해진 시간마다 쉬게하면 자원을 아낄 수 있습니다.
  1. 순차적인 연출
  • 순차적인 연출을 짜기에 최적화 되어있습니다.

0개의 댓글