Unity/최적화

·Unity/최적화
문제 두 점 간의 거리는 각 요소(x, y, z) 의 차를 제곱한 다음 더한 값에 루트를 씌운 값이다. 게임에서도 이 공식을 사용해야할 때가 자주 있다. 이때 정확한 거리값이 필요하다면 이 공식을 사용하지만, 일정 거리 내 들어왔다던가하는 단순 비교에는 굳이 루트를 취하지 않아도 계산이 가능하다. 차원이 달라도 점 간 거리 공식은 같기 때문에 Vector3뿐만 아니라 Vector2, Vector4에도 모두 해당된다. 해결방안 따라서 이런 상황에서는 Vector3.Distance 또는 Vector3.magnitude보다는 Vector3.sqrMagnitude를 사용한다. 참고로 sqrMagnitude는 square root of Magnitude가 아니라, square of Magnitude이다. Unit..
·Unity/최적화
문제일반적으로 생각하는 것과는 달리, Debug Log 함수들은 디버그 빌드에서만 작동하는게 아니라 릴리즈 빌드에서도 작동한다. 이는 성능 저하로 이어지기 때문에 빌드를 하기 전에 Debug Log 함수들을 지워주는 것이 좋다. 해결방안1. Conditional Attribute첫 번째는 Conditional Attribute를 사용해서 컴파일 시에 Debug.Log 호출 관련된 부분들을 제외하는 방법이다.일일이 찾아내서 지우기는 번거롭고 디버그 빌드에서 또 사용할 수도 있기 때문에, 다음과 같은 커스텀 클래스 및 함수를 작성해 Assets\Plugins 폴더 내에 저장한다.using System.Collections;using System.Collections.Generic;using UnityEngi..
·Unity/최적화
문제 배열에 대한 용어 설명부터 하자면 Multidimensional Array는 int[,]로 선언되는 배열이다. Jagged Array와는 달리 정해진 크기만큼의 '행렬'이라고 보면 된다. Jagged Array는 int[][]로 선언되는 배열이다. Array of Arrays라고도 한다. 배열로 이루어진 배열이기 때문에 각 요소 배열의 길이가 다를 수 있다. Single Array는 int[]로 선언되는 배열이다. 일반적으로 속도 면에서는 빠른순으로 나열하면 Single Array > Jagged Array > Multidimensional Array이다. 아래 내용은 출처 란의 스택오버플로우 글에서 발췌한 것이다. 다음과 같은 요소에 접근하는 코드를 작성했을 때, static void SetEle..
·Unity/최적화
문제 유니티에서 코루틴을 사용할 때, 일정 시간 뒤에 코드가 실행되고 싶으면 YieldInstruction 을 사용한다. 예를 들면 yield return new WaitForEndOfFrame(); 가 있다. yield는 가비지를 생성하지 않지만 계속해서 새로운 YieldInstruction 오브젝트를 만들면 가비지가 생성된다. 실험 public class CoroutineTest : MonoBehaviour { private WaitForEndOfFrame WaitForEndOfFrame = new WaitForEndOfFrame(); [SerializeField] private int count = 10000; [SerializeField] private bool useCache = true; pr..
virtus
'Unity/최적화' 카테고리의 글 목록