Unity - Coroutine, yield, Invoke, IEnumerator
·
Unity
코루틴 (Coroutine)Unity에서 제공하는 특수한 함수 실행 방식이다.일반적인 동기 함수는 한 번에 호출되면 끝까지 즉시 실행되는 반면,코루틴은 중간에 잠시 멈췄다가(yield) 나중에 다시 이어서 실행할 수 있다.마치 비동기처럼 동작하는 듯이 보이는데 사실 비동기와는 조금 다르다.진행 중인 쓰레드에서 일시정지 후, 잠시 다른 로직의 진행에 쓰레드 자리를 내어준 뒤, 재실행 되는 듯한 구조를 보인다. 아래는 코루틴의 기본 구조다.public class CoroutineExample : MonoBehaviour{ void Start() { StartCoroutine(PrintNumbers()); } IEnumerator PrintNumbers() { ..
Unity - Rigidbody, Collider - 물리, 충돌 처리
·
Unity
Unity에서는 충돌 감지 시스템을 제공한다.단순 감지 뿐 아니라 질량, 중력, 마찰, 탄성 등 물리적 특성까지 구현되어있다.이러한 충돌 처리는 게임에서 수많은 상호작용에 사용되는 기능이므로 잘 이해하고 숙지해야 한다. Rigidbody : 물리 연산의 주체. 질량, 중력, 속도, 회전력 등을 담당.Collider : 물리적 충돌 영역을 정의. 모양에 따라 경계가 결정.이 두 컴포넌트를 조합하여 물리 충돌 처리가 가능하다.이번 글에서는 이 물리 충돌 처리에 관해 정리해볼 것이다. Rigidbody물리 시뮬레이션을 적용하기 위한 핵심 컴포넌트다.게임 오브젝트가 중력에 영향을 받거나, 힘(충격)을 받아 움직이거나, 회전하는 모든 물리적 현상은 Rigidbody를 통해 계산된다. 주요 속성Mass질량 (기본..
Unity - Transform, 위치 이동
·
Unity
TransformUnity의 모든 GameObject에 자동으로 포함된 기본 컴포넌트다.이는 단순히 위치를 저장하는 데이터 구조 뿐만 아니라 씬 내에서 공간적 존재를 정의하는 근본적인 컴포넌트다. 구성 요소Position오브젝트 위치VectorRotation오브젝트 회전QuaternionScale오브젝트 크기Vector 자식 오브젝트는 부모의 Transform 영향을 함께 받는다.즉 부모가 회전하거나 이동하면 자식도 같이 회전하거나 이동하는 것이다. 이것을 월드 좌표와 로컬 좌표로 설명할 수 있다. 월드 좌표 (World Space) : 씬 전체의 기준 좌표계. (0,0,0)은 씬의 절대 원점.로컬 좌표 (Local Space) : 부모 Transform을 기준으로 한 상대 좌표. 부모가 회전하면 자신의..
Unity - 오브젝트(Object), 컴포넌트(Component), 오브젝트 풀링(Object Pooling)
·
Unity
Object라는 건 프로그래밍 외에도 다양한 곳에서 다양한 의미로 사용된다.어째 현실에서도 Object 데이터 타입이랑 똑같다... 이번 글에서는 유니티에서 Objec와 관련된 내용들을 정리해 봤다. Scene게임의 한 단계 / 장면을 구성하는 모든 리소스와 상태를 담는 .unity 파일이다.독립적인 세계(레벨) 단위로 메뉴, 플레이, 엔딩 등 씬을 분리해 개발, 테스트, 로딩을 최적화할 수 있다.씬 간의 전환은 SceneManager.LoadScene() 함수를 통해 이루어진다.using UnityEngine.SceneManagement;// 싱글 로드SceneManager.LoadScene("Game");// 애드티브 로드(멀티 씬)SceneManager.LoadScene("UI", LoadScen..
Unity - 생명주기 (Life Cycle)
·
Unity
Unity Life Cycle (생명주기)생명주기 하면 가장 먼저 떠오른 키워드는 렉시컬 스코프 였다.유니티서 생명주기는 MonoBehaviour 기반 스크립트를 관리하는 순서이자 흐름이다. 모든 Unity 컴포넌트는 생성 → 초기화 → 실행 → 종료 단계를 거치며각 시점마다 특정 콜백 함수들이 호출된다. 전반적인 실행 순서는 다음과 같다Awake()OnEnable()Start()Update()FixedUpdate()LateUpdate()OnDisable()OnDestroy()생명주기 관련 함수들에 대해서 각각 조금 더 알아보자 Awake()가장 먼저 호출되는 초기화 함수로 게임 오브젝트 활성화 여부와 상관없이 스크립트가 메모리에 로드될 때 한 번 호출된다.주로 참조 연결, 싱글톤 인스턴스 지정 등에 ..