오늘은 유니티 입문 강의를 마치면서 이전에 TIL로 정리했던 내용을 제외하고 새로 학습한 내용을 정리해보려고 한다.
<타일맵이란?>
2D게임 개발에서 격자 기반 맵(Grid-Based Map) 을 쉽게 생성하고 관리할 수 있는 기능이다. 타일(Tile)이라는 작은 사각형 조각들을 사용하여 게임 맵을 효율적으로 구성할 수 있다.
<타입맵의 주요 구성 요소>
<타일 그리는 법>





<코루틴이란?>
Unity에서 시간 기반 작업이나 비동기적 작업을 처리하기 위해 사용되는 메소드이다. 일반적인 함수와 달리, 코루틴은 실행을 중단하고 나중에 다시 실행을 재개할 수 있다.
<특징>
<자주 사용하는 yield return의 종류>
yield return null
다음 프레임까지 대기
IEnumerator WaitForNextFrame() { Debug.Log("현재 프레임"); yield return null; // 다음 프레임까지 대기 Debug.Log("다음 프레임에서 실행"); }
yield return new WaitForSeconds(시간)
지정된 시간(초)만큼 대기
IEnumerator WaitForSecondsExample() { Debug.Log("작업 시작"); yield return new WaitForSeconds(2f); // 2초 대기 Debug.Log("2초 후 작업 실행"); }
yield return new WaitForSecondsRealtime(시간)
실제 시간(Real Time) 기준으로 대기
(Time.timeScale의 영향을 받지 않음)
IEnumerator WaitForSecondsExample() { Debug.Log("작업 시작"); yield return new WaitForSeconds(2f); // 2초 대기 Debug.Log("2초 후 작업 실행"); }
yield return new WaitUntil(조건)
조건이 참(True)이 될 때까지 대기
IEnumerator WaitUntilExample() { Debug.Log("조건을 기다리는 중..."); yield return new WaitUntil(() => Input.GetKeyDown(KeyCode.Space)); // 스페이스 키 입력 대기 Debug.Log("스페이스 키 입력됨"); }
yield return new WaitWhile(조건)
조건이 거짓(False)이 될 때까지 대기
IEnumerator WaitWhileExample() { Debug.Log("조건이 참인 동안 대기..."); yield return new WaitWhile(() => Time.time < 5f); // 게임 시간이 5초 미만인 동안 대기 Debug.Log("5초 경과"); }
yield break
코루틴 실행을 즉시 종료
IEnumerator CoroutineWithBreak() { Debug.Log("작업 시작"); yield return new WaitForSeconds(1f); Debug.Log("코루틴 종료"); yield break; // 코루틴 강제 종료 }
Unity의 Input System은 사용자의 입력(키보드, 마우스, 게임패드, 터치 등)을 처리하는 시스템이다. Unity는 기존의 Legacy Input Manager와 새로운 Input System Package 두 가지 방식으로 입력을 처리할 수 있다.
<특징>
<구조>
StringToHash()를 사용하면 문자열을 정수형처럼 사용할 수 있다.
<예시>
private static readonly int IsDamage = Animator.StringToHash("IsDamage"); animator.SetBool(IsDamage,true);
Mathf.Atan2()를 사용하면 역탄젠트값을 구할 수 있다. 하지만 결과값이 라디안이기에 Mathf.Rad2Deg를 곱해서 각도법으로 변환을 해줘야 사용하기 편하다.
UI앵커를 사용하면 Canvas 상의 UI요소가 화면 크기나 해상도가 변해도 일정한 위치와 크기를 유지한다. Alt키를 누른 상태로 UI앵커를 클릭하여 사용할 수 있다.