본문 바로가기

Unity Engine

(14)
[Unity] 유니티 오브젝트의 null 확인 Preface: UnityEngine.Object 유니티에서의 모든 게임 오브젝트는 UnityEngine.Object로부터 상속을 받는다. UnityEngine.Object는 유니티 엔진에서 생성된 C++ 내부 구현 객체와 C#에서 해당 객체의 포인터를 참조하는 인터페이스 클래스로 구성되어 있다. 여기서 C++은 unmanaged 언어라 프로그래머가 객체의 메모리 해제 시점을 결정할 수 있지만 C#은 managed 언어이기 때문에 메모리 해제를 GC에 맡겨야 하는 차이가 있다. UnityEngine.Object의 파괴 유니티로 코딩을 하면서 UnityEngine.Object(혹은 그를 상속하는)를 파괴하려고 하면 Destroy() 또는 DestroyImmediate()를 호출하게 된다. 이때 위에 언급한..
유니티 Terrain Sample Asset Pack 셰이더 오류 해결 에셋 스토어에서 유니티 공식으로 제공하는 지형 에셋인 Terrain Sample Asset Pack이 있다. 다양한 브러시나 각종 머티리얼을 제공하여 지형을 더 멋지게 만들 수 있도록 해준다. 하지만... 식물 프리팹을 쓰려고 하면 이렇게 충격적인 분홍색이 우리를 반겨준다. 이 문제를 해결해보도록 하자. 직접 수정하기 분홍색이 나오는 이유는 유니티에서 셰이더에 오류가 있을 때 나오는 기본 색이다. 오류가 나오는 이유 중 하나는 에셋이 URP나 HDRP를 쓰고 있는데 우리 프로젝트는 그렇지 않고 기본 렌더링 파이프를 쓸 때 호환이 맞지 않아서다. 따라서 우리는 프로젝트를 HDRP로 올려주거나 에셋의 렌더링 파이프를 빌트인 수준으로 내리는 작업을 해야 한다. 여기서는 재작업을 통해 에셋을 살려보겠다. 머티리..
유니티 Raycast로 3D 오브젝트 클릭과 드래그 https://github.com/nicotina04/UnityDrag3DObject GitHub - nicotina04/UnityDrag3DObject: An implementation of dragging object and it's example An implementation of dragging object and it's example - GitHub - nicotina04/UnityDrag3DObject: An implementation of dragging object and it's example github.com 이번 포스팅에서는 씬에 존재하는 3D 오브젝트를 마우스로 클릭, 그리고 드래그하는 방법을 알아본다. 그전에 어떻게 마우스의 입력이 게임 내의 오브젝트와 상호작용할 수 있는지 ..
유니티 Procedural Cave Gerneration 랜덤 동굴 생성 1 유니티 버전 2021.3.9f1 들어가기 전 참고 이 포스트는 아래의 동영상의 내용을 한국어로 재구성한 자료이다. 어느 정도 영어 청취가 가능하다면 동영상을 봐도 좋다. https://youtu.be/v7yyZZjF1z4 이 포스트는 유니티 엔진에서 셀룰러 오토마타 기반으로 동굴 지형을 생성하는 cave generation을 다룰 것이다. 에피소드 1에서는 직접 동굴을 만들기 전 기즈모를 이용해 대략적인 모습을 보여주는 것을 목표로 한다. 필요 변수 세팅 필요한 변수는 다음과 같다. int width, height: 맵의 너비와 높이다. bool useRandomSeed: 랜덤에 시드를 직접 부여할지 안 할지 고르는 변수다. int randomFillPercent: 초기에 맵을 위와 같은 흑색을 어느 정..
Memory Management in Unity 유니티 메모리 관리 번역 이 포스트는 유니티 튜토리얼을 번역한 것이다. 매끄럽지 않은 번역이나 오역이 있을 수 있음에 유의하고 충분한 영어 독해가 가능하면 원본을 보면 좋다. 여담이지만 원문에도 어색한 맥락이 있는데 이 포스트에도 그런 느낌이 있다면 그것은 그 맥락을 그대로 옮겨서 그런 것이니 이를 참고하면 좋겠다. 만약 오류가 명백히 보인다면 제보해주면 감사하게 반영하겠다. 참고: 2019년 3월 6일 자 버전을 번역했다. 요약 유니티 엔진에서 적절한 메모리 관리는 도전적인 일이 될 수 있다. 이 가이드에서는 공개적으로 사용 가능한 플랫폼(publicly available platform)에서 메모리 사용을 프로파일, 최적화하는 필수 지식을 습득하는 것을 목표로 한다. 1. A guide to optimizing Memory ..