Unity

·Unity/최적화
문제 재정의된 비교 연산자 MonoBehaviour 인스턴스가 null인지 아닌지 확인하고 싶을때 보통 이렇게 코드를 작성한다. if(myGameObject == null) { } 하지만 유니티는 == 연산자를 재정의해 사용하고 있기 때문에 생각과는 다르게 동작한다. 우선 유니티가 왜 이렇게 재정의해서 사용하게 됐는지 알아보자. 왜 그랬을까? 먼저 요약하자면 유니티는 다음 두가지의 이유로 ==를 재정의해서 사용한다. 에디터에서의 디버깅 용이성 C/C++로 이루어진 내부 구현과 C# 래퍼 오브젝트, 그로 인한 오브젝트 생명주기의 차이 디버깅 용이성 첫 번째로, Inspector에서 보여지는 필드들(public, SerializedField)에 대한 디버깅 용이성이다. Monobehaviour가 어떤 필드를..
·Unity/기타
Jenkins젠킨스 설치하면 유니티 플러그인이 없는 상태로 설치될텐데, 플러그인부터 깔고 유니티 플러그인 관련 설정을 해줘야한다.1. Unity3d 플러그인 설치[Jenkins 관리] > [Plugins] > [Available Plugins] 탭 클릭 > Unity검색해서 Unity3d plugin 다운로드2. Unity 실행 경로 설정[Jenkins 관리] > [Global Tool Configuration] > [Unity3d] 에서 [Add Unity3d] 클릭 > Name에 버전명, Installation directory에 유니티 에디터 경로 설정(예를 들면 C:\Unity\2021.3.5.f1\) > [Save] 및 [Apply] 3. 프로젝트의 빌드 구성대시보드에서 생성한 프로젝트의 [구성..
최단 경로 찾기 알고리즘 최단 경로 찾기 알고리즘에는 여러가지 알고리즘들이 있는데, 상황에 따라 다르게 사용할 수 있다. 게임이 어떤 케이스인지 생각해보고 적용하면 된다. 한 개의 시작노드와 한 개의 도착노드 Greedy Best First Search - 휴리스틱 값에 기반한 우선순위 큐 사용. 즉 f(x) = h(x) A* - 게임에 주로 사용된다. 아래 설명 참고 한 개의 시작노드와 여러 개의 도착노드, 또는 여러 개의 시작노드와 한 개의 도착노드 Breadth First Search(BFS) - 가중치 없는 간선 Dijkstra(다익스트라) - 음수가 아닌 가중치가 있는 간선 Bellman-Ford(벨만포드) - 양수 또는 음수 가중치가 있는 간선 여러 개의 시작노드와 여러 개의 도착노드 Floy..
타일형 게임을 구현할 때 유니티에서 제공하는 타일맵을 사용하면 팔레트를 이용해 쉽게 타일을 배치 할 수 있다는 장점이 있다. 단순히 타일을 배치하는 것만으로 충분할 수도 있지만, 구현하려는 게임에 따라 각 타일에 데이터를 저장 해야 할 때가 있다. 어떻게 해야할까? 먼저 타일맵부터 설명하고 그 이후 구현 방법을 서술하겠다. 타일맵에서 특정 좌표의 타일 얻기(또는 셀 좌표 얻기) 타일맵은 그리드 형태로 되어있으며 각 타일(셀)의 좌표는 다음과 같이 얻을 수 있다. Tilemap tilemap; // 타일맵 (GetComponent로 얻거나 인스펙터에서 할당해줬다고 가정) Vector3 localPos; // 로컬 포지션 Vector3 worldPos; // 월드 포지션 Vector3Int worldToCe..
virtus
'Unity' 태그의 글 목록 (4 Page)