전체 글
-
Unity에서의 좌표계, 벡터 연산 및 회전카테고리 없음 2024. 7. 24. 09:43
유니티 게임개발캠프 TIL 63일차 1. 월드 스페이스 (World Space)와 로컬 스페이스 (Local Space)의 차이월드 스페이스:게임의 전체 좌표계로, 모든 객체가 전역 좌표를 기준으로 위치합니다.모든 객체의 위치와 회전이 절대적인 기준에 의해 정의되며, 게임 씬에서의 실제 위치를 나타냅니다.로컬 스페이스:특정 객체의 좌표계를 기준으로, 해당 객체의 부모 객체를 기준으로 상대적인 위치와 회전을 나타냅니다.객체의 위치와 회전이 부모 객체에 대한 상대적인 기준으로 정의되며, 객체 간의 계층적 관계를 나타내는 데 유용합니다.2. 벡터의 내적과 외적 사용 상황벡터의 내적:두 벡터 간의 각도를 계산하거나 두 벡터가 얼마나 평행한지를 판단할 때 사용됩니다.예를 들어, 조준점과 목표물 간의 각도를 계산하..
-
프로세스, 스레드, 멀티스레딩 및 CPU와 GPU의 차이카테고리 없음 2024. 7. 23. 09:16
유니티 게임개발캠프 TIL 62일차 프로세스와 스레드프로세스운영 체제에서 실행 중인 프로그램의 인스턴스로, 고유의 메모리 공간을 가집니다.스레드프로세스 내에서 실행되는 작업 단위로, 같은 메모리 공간을 공유하여 효율적인 통신과 데이터 처리가 가능합니다.Unity에서 Main Thread와 스레드 사용Main Thread에서만 Transform 변경 가능Unity에서는 Main Thread가 아닌 다른 스레드에서 Transform을 변경할 수 없습니다. 모든 Unity 엔진 객체는 Main Thread에서만 안전하게 접근하고 변경할 수 있습니다.비동기 작업의 한계비동기 작업의 복잡성모든 작업을 비동기로 처리하면 복잡성이 증가하고 디버깅이 어려워질 수 있습니다. 비동기 작업은 적절한 동기화와 에러 처리가 필..
-
Unity 직렬화와 데이터 저장 포맷카테고리 없음 2024. 7. 22. 20:43
유니티 게임개발캠프 TIL 61일차 Unity 직렬화[SerializeField] 제거 시출력 결과: 2설명: 인스펙터에서 intValue의 값을 3으로 변경했지만, [SerializeField]를 제거하면 Unity는 더 이상 이 필드를 직렬화하지 않습니다. 따라서 기본값인 2가 출력됩니다.[HideInInspector] 추가 시출력 결과: 3설명: [HideInInspector]는 필드를 인스펙터에서 숨기지만, 필드의 직렬화 상태는 유지됩니다. 따라서 인스펙터에서 설정한 값인 3이 출력됩니다.결과가 다른 이유[SerializeField] 제거는 직렬화를 중지하여 기본값(2)으로 초기화하지만, [HideInInspector]는 필드를 숨기지만 직렬화 상태를 유지하여 인스펙터 값(3)을 유지합니다.데이..
-
Graph와 길찾기 알고리즘카테고리 없음 2024. 7. 19. 20:23
유니티 게임개발캠프 TIL 60일차 Graph와 TreeGraph란?Graph는 정점(Node)과 간선(Edge)으로 구성된 자료구조로, 정점 간의 연결 관계를 나타냅니다.네트워크, 소셜 그래프, 지도 등의 모델링에 사용됩니다.Tree와 Graph의 관계Tree는 Graph의 일종입니다. 모든 Tree는 Graph이지만, 모든 Graph가 Tree인 것은 아닙니다.Tree는 계층 구조를 가지며, 사이클이 없는 연결된 그래프입니다.NavMesh의 길찾기 알고리즘NavMesh는 주로 A* (A star) 알고리즘을 사용하여 최단 경로를 찾습니다.A* 알고리즘은 휴리스틱을 사용해 효율적으로 길을 찾습니다.길찾기 알고리즘길찾기 알고리즘이란?길찾기 알고리즘은 그래프나 맵에서 두 지점 간의 최단 경로를 찾는 알고리..
-
Unity 최적화 기법카테고리 없음 2024. 7. 18. 21:25
유니티 게임개발캠프 TIL 60일차 1. 유니티 최적화 기법a. 오브젝트 풀링설명: 자주 생성되고 파괴되는 객체를 재사용합니다.b. LOD (Level of Detail)설명: 멀리 있는 객체의 디테일을 낮춥니다.c. 배치설명: 여러 메쉬를 하나로 결합하여 드로우콜 수를 줄입니다.d. 라이트맵 베이킹설명: 조명을 미리 계산하여 성능을 향상시킵니다.2. 최적화 경험 및 방법a. 최적화 경험설명: 오브젝트 풀링과 텍스쳐 아틀라스를 사용하여 성능을 최적화해본 경험이 있습니다.b. 최적화에서 중요한 부분설명: 성능 프로파일링을 통해 병목 지점을 찾아내고, 효율적인 리소스 관리를 통해 성능을 최적화하는 것이 중요합니다.c. 적용해본 텍스쳐 포맷설명: DXT1, DXT5, ETC2 등의 텍스쳐 압축 포맷을 사용해 ..
-
메모리 최적화 방법 및 Unity 관련 질문들카테고리 없음 2024. 7. 17. 21:25
유니티 게임개발캠프 TIL 59일차 메모리 최적화 방법메모리 최적화 방법에 대해 알고 있는 것이 있나요?게임의 성능을 향상시키기 위해 메모리 사용량을 줄이는 다양한 기법들이 있습니다.1.1 POT(Power of Two) 텍스쳐에 대해 설명해주세요.POT 텍스쳐는 너비와 높이가 2의 거듭제곱인 텍스쳐로, 그래픽 하드웨어에서 효율적으로 처리됩니다.1.2 아틀라스에 대해 설명해주세요.여러 개의 텍스쳐를 하나의 큰 텍스쳐에 합치는 기법으로, 드로우콜을 줄여 성능을 향상시킵니다.1.3 오브젝트 풀에 대해 설명해주세요.오브젝트 풀은 자주 생성되고 파괴되는 객체를 미리 생성해 두고 재사용하는 기법으로, 메모리 할당과 해제 비용을 줄입니다.Unity 내에서 드로우콜을 확인할 수 있나요? 어떤 방법을 통해 확인할 수..
-
Unity에서의 Invoke, Coroutine, 그리고 멀티쓰레딩카테고리 없음 2024. 7. 16. 20:44
유니티 게임개발캠프 TIL 58일차 InvokeRepeating과 Coroutine의 동작InvokeRepeating설명: InvokeRepeating을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈춥니다.이유: 오브젝트가 비활성화되면 해당 오브젝트의 모든 Invoke 호출이 자동으로 취소됩니다.사용 사례: 일정 시간 간격으로 간단한 작업을 반복 실행할 때 유용합니다.Coroutine설명: Coroutine을 통해 반복 실행 중인 메서드는 오브젝트를 비활성화하면 멈춥니다.이유: 오브젝트가 비활성화되면 해당 오브젝트에서 실행 중인 모든 코루틴이 자동으로 정지됩니다.사용 사례: 비동기 작업을 처리하거나, 일정 시간 동안 작업을 반복하거나 지연할 때 유용합니다.성능 최적화와 비동기 처리메모리 사용 ..
-
Unity의 주요 개념 및 메서드카테고리 없음 2024. 7. 15. 20:10
유니티 게임개발캠프 TIL 57일차 Time.timeScale과 Update, FixedUpdateTime.timeScale을 0으로 설정하면 Update는 호출되지 않지만, FixedUpdate는 호출될 수 있습니다.Update는 프레임 기반으로 호출되며, FixedUpdate는 물리 계산 주기에 따라 호출되기 때문입니다.Update와 FixedUpdate의 호출 주기Update의 호출 주기는 주로 프레임 레이트에 영향을 받습니다.프레임 레이트가 높을수록 Update가 더 자주 호출되며, 프레임 레이트가 낮을수록 호출 빈도가 줄어듭니다.FixedUpdate의 호출 주기는 Time.fixedDeltaTime에 의해 결정됩니다.Time.fixedDeltaTime 값은 고정된 시간 간격을 설정하여 물리 연..