유니티(28)
-
[Unity] 최적화를 위한 게임 오브젝트 태그(Tag) 비교 방법
태그(Tag)란? 유니티를 사용하다 보면, 스크립트에서 태그(Tag)를 이용해서 원하는 게임 오브젝트인지를 판별할 때가 자주 있다. 하지만 태그를 사용해서 비교를 하더라도 자칫 잘못하면 가비지 메모리를 잔뜩 생성할 수도 있다는 글을 본 적이 있다. 1. CompareTag() 메서드를 이용한 비교 (권장) pirvate void OnTriggerEnter2D(collider2D collision) { if(collision.CompareTag("Player")) //CompareTag() 메서드를 활용한 비교 { ... } } 2. string 문자열을 이용한 비교 (권장하지 않음) private void OntriggerEnter2D(collider2D collision) { if(collision.t..
2022.01.17 -
[압량(Amnyang)] #1. 2D Bone Animation으로 흔들리는 배경 오브젝트 구현하기
현재 나는 겨울방학동안 실력 증진을 위한 유니티 게임 개발 프로젝트를 진행 중이다. 나까지 총 기획 1명, 프로그래밍 2명, 아트 1명으로 구성된 대학생들이다. 다들 경험이 없는 초보 개발자들이지만, 게임을 만들고 싶어하는 열정이 가득한 사람들이며 각자 자기 분야에 대해 공부를 하면서 실력을 쌓아가고 있는 중이다. 그러던 중, 디자이너 분께 다음과 같은 요구사항을 받았다. 혹시 나무에 걸려 있는 천이 바람에 흔들리는 효과를 줄 수 있나요? 그래도 유니티 애니메이션(Animation)과 애니메이터(Animator)에 대해서는 어느정도 조금 공부를 해 놓은 상황이었다. 하지만, 어떤 애니메이션 기법으로 구현을 할 지 고민이었다. 그래서 유니티 에셋 스토어(Unity Asset Store)에 들어가서 2D 무..
2022.01.16 -
[Unity, C#] 구조체(struct)는 왜 new 문법을 지원할까?
C#에서 구조체는 값 형식(value type)이기에, 스택(stack)에 데이터를 담고 있는 변수 체계다. 레퍼런스 형식(reference type)은 실제 데이터는 힙(Heap) 영역에 존재하고, 스택(Stack)에는 해당 데이터로 가는 주소를 담고 있는 변수 체계다. 결론적으로 Vector3, Vector2는 구조체이기에 지역 변수로 생성한 경우, 로직이 끝나는 블록(block)을 만나게 되면 자동 메모리 반납 처리가 된다. void Update() { Vector3 vec3 = new Vector3(); Vector2 vec2 = new Vector2(); } // 끝나는 블록을 만났으므로, vec3, vec2 메모리 반납 C#은 힙 할당을 하는 클래스 객체 생성과 헷갈리게 왜 이런 new 문법을..
2022.01.13 -
[Unity] Visual Studio에서 Unity 디버깅 연결이 되지 않는 경우
Visual Studio가 2022 버전이 나와서 몇 번 써봤는데, 자동 완성 기능부터 해서 UI 측면까지 더 강력하고 이쁘게 변했더라구요. 설레는 마음으로 유니티에서 써보려고 했는데, 연동이 되지 않았습니다. 정확하게 말하자면, 연동은 됐는데 유니티 디버깅을 사용할 수가 없었습니다. 이게 무슨 어처구니 없는 상황인지?... 그래서, 구글링하여 얻은 정보들을 일단 있는대로 다 해봤습니다. 1. 구글링을 통한 시도의 흔적들 External Script Editor에서 Visual Studio가 선택 항목에 있는 경우 Unity Editor 상단 Edit → Preferences → External Tools → External Script Editor를 Visual Studio로 설정 External Sc..
2022.01.13