본문 바로가기

Unity27

유니티 시네머신 3.x : 추적 카메라 설정 방법 유니티 시네머신이 3.x 로 업그레이드 되면서, 컨셉과 용어 등이 대폭 업그레이드 되었습니다.이번 글에서는 기본적인 '추적' 카메라를 설정하는 방법에 대해 알아보겠습니다.그 외에 자세한 내용은 시네머신 패키지에서 제공하는 sample 을 다운받아 살펴보시면 도움이 되실 거라 생각합니다. 먼저 시네머신 패키지를 다운로드 받습니다. 설치가 끝나면, Main 카메라에 Cinemachine Brain 컴포넌트가 추가되어 있는걸 확인하실 수 있습니다. 컴퍼넌트 내에 Live Camera 가 Cinemachine Camera 로 되어 있는지 확인합니다. 그 다음 hierarchy 윈도우에서 오른쪽 마우스를 클릭하고, Cinemachine > Cinemachin Camera 를 추가합니다. Cinemachine Ca.. 2025. 5. 28.
유니티에서 FBX 파일 가져왔는데 텍스처가 안 보일 때 외부에서 FBX 모델링 파일을 받아 유니티에 불러오면, 오브젝트들이 패키지 모양 아이콘으로 표시됩니다.처음에는 별다른 문제 없이 배치되는 줄 알았는데, 머티리얼이 전부 회색으로 나오고 텍스처가 적용되지 않아 당황스러웠습니다. 머티리얼 설정에서 Albedo에 텍스처를 입히려고 했지만, 해당 슬롯이 비활성화되어 있어 편집이 불가능했습니다.조금 더 살펴보니, FBX 파일에서 불러온 머티리얼은 읽기 전용 상태였기 때문입니다.FBX 파일은 외부에서 가져오는 형식이라 기본적으로 메시, 본, 애니메이션, 머티리얼 등의 정보가 포함되어 있지만, 머티리얼 자체는 수정이 제한된 상태로 임포트됩니다. 이 문제를 해결하기 위해, 유니티에서는 FBX 파일에서 머티리얼을 추출(Extract) 하는 기능을 제공합니다.FBX 파일을.. 2025. 5. 10.
Unity 에서 Empty object 를 Scene 창에서 보이게 하는 방법 씬을 정리하다 보면, 눈에 보이지 않는 오브젝트들을 만들어야 할 때가 종종 있습니다.대표적으로 GameData, GameManager, SoundManager 같은 오브젝트들이 그런 예에 해당합니다.이러한 오브젝트들은 보통 빈 GameObject를 하나 만들고 그 위에 스크립트만 추가해서 사용하는 경우가 많습니다.즉, 씬에는 존재하지만 Scene 창에서는 아무것도 보이지 않기 때문에 나중에 찾기 어렵고 존재감도 약하게 느껴집니다. 아이콘을 추가해 빈 오브젝트를 씬에 표시해보세요이럴 때 아이콘(icon)을 설정해주면 매우 유용합니다.Unity 에서는 오브젝트에 아이콘을 지정하면 씬(Scene) 창에서 시각적으로 확인할 수 있도록 표시됩니다.빈 오브젝트를 선택한 후, Inspector 창 상단(오브젝트 이름.. 2025. 4. 30.
코루틴의 한계 : 일시 정지가 불가능한 구조 Unity 코루틴은 흐름을 간단히 제어할 수 있습니다.그러나 기본적으로 "시작"과 "완전 종료"만 지원하며, 중간에 멈췄다가 이어서 실행하는 기능은 존재하지 않습니다. 그 이유는 ? StartCoroutine 으로 생성된 코루틴은 메모리에 "Coroutine Handle"로 관리됩니다.StopCoroutine이나 StopAllCoroutines를 호출하면 이 Handle은 메모리에서 완전히 삭제됩니다.따라서 삭제된 코루틴은 어디까지 실행했는지 정보가 모두 사라지며, 복구할 수 없기 때문입니다. 저장이 불가능한 구조코루틴은 진행 상황을 저장하지 않습니다.도중에 StopCoroutine을 호출하면 그 자리에서 종료되고, 다시 StartCoroutine을 호출하면 항상 처음부터 다시 시작합니다.중간부터 이어서.. 2025. 4. 27.
Unity에서 Enum을 Dictionary로 연결하여 Hierarchy 자식 관리하기 Unity 프로젝트를 진행하다 보면, 게임 오브젝트의 Hierarchy 안에 있는 자식 오브젝트들을 코드로 관리해야 할 때가 많습니다.가장 단순한 방법은 배열([]) 을 사용하여 인덱스 번호(0, 1, 2, ...) 로 오브젝트를 저장하는 것입니다. 하지만 이 방법에는 한 가지 문제점이 있습니다. "인덱스 번호는 의미를 설명하지 못합니다." ( 0이 무슨 상태이고, 1이 무슨 상태인지 숫자만 보고 알기 어렵습니다. )또한 배열 인덱스 대신 enum을 사용하려고 (int)enum 식으로 강제 변환을 하게 되는데, 이 역시 코드 가독성과 유지보수성을 떨어뜨리는 요인이 됩니다. 배열 대신 Dictionary로 구조 개선하기Dictionary 를 사용하면 Enum 값을 키(Key)로, 오브젝트 리스트를 값(Va.. 2025. 4. 27.
Hierarchy 구조를 이용해 스크립트에서 제어하기 유니티에서는 오브젝트를 Inspector 창에서 일일이 등록해서 배열이나 리스트로 관리하는 경우가 많습니다. 하지만 이 방식은 관리도 번거롭고, 오브젝트가 많아지면 실수하기도 쉽습니다.좀 더 유연하고 효율적인 방법은 빈 오브젝트를 부모로 만들고, 자식 오브젝트들을 계층 구조로 정리한 뒤 스크립트에서 자동으로 접근하는 방식입니다. Transform을 기준으로 순환그런데 이때 중요한 점이 하나 있습니다. 자식을 순환하려면 GameObject 가 아닌 Transform 을 기준으로 순환해야 한다는 점입니다.왜냐하면, 유니티의 구조상 부모-자식 관계는 GameObject 가 아닌 Transform 이 관리하고 있기 때문입니다. * GameObject 클래스는 오브젝트의 이름, 태그, 컴포넌트 등 일반적인 정보를.. 2025. 4. 21.