본문 바로가기

전체 글

[Unreal] AssetBundle AssetBundle은 FNAME으로 되어 있는 metadata다.가령 MyMesh라는 UStaticMesh가 있을 때, 이를 Bundle1 그룹에 묶어서 관리하고 싶다면 다음과 같이 구성할 수 있다. UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (AssetBundles = "Bundle1")) UStaticMesh* MyMesh;  UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (AssetBundles = "Bundle1", "Bundle2")) UStaticMesh* MyMesh;  또한 여러개 지정 가능하다. 이러한 AssetBundle은 주로, 에셋을 로드하거나 처리할 때 많이 사용되며.. 더보기
[Unreal] Gameplay Tag https://waterglass0105.tistory.com/110 [Unity] TagUnity에서 Tag는 게임 오브젝트를 식별하고 분류하기 위한 문자열 라벨이다. Tag를 사용하면 특정 오브젝트 그룹에 쉽게 접근하거나 필터링할 수 있다.예를 들어, 적 오브젝트는 "Enemy" 태그를, 플레waterglass0105.tistory.com유니티와 마찬가지로, 언리얼의 태그도 게임 내에서 개체(Actor, Component 등)에 태그를 부여하여 특정 속성이나 상태를 나타내고, 이를 기반으로 게임 로직을 처리할 수 있게 하는 시스템이다. 이 시스템은 특히 게임플레이의 복잡성을 줄이고 코드의 가독성을 높이며, 재사용 가능한 로직을 작성하는 데 유용하다.GamePlay Tag는 크게 3가지로 볼 수 있다... 더보기
Unity의 SOLID https://waterglass0105.tistory.com/38 [C++] OOP; Object-Oriented ProgrammingOOP; Object-Oriented Programming 설계 원칙 (SOLID) SRP; Single Responsibility Principle; 단일 책임의 원칙 모듈이 변경되는 이유는 한가지여야 하며, 오직 하나의 액터에 대해서만 책임을 져야한다. OCP; Open-Closed Pwaterglass0105.tistory.com SOLID 원칙을 다시금 복기해보면 다음과 같이 생각할 수 있다. Single responsibility (단일책임원칙)클래스가 한 가지 작업만 수행한다. 즉, 변경할 이유는 하나만 있다.Open-closed (개방폐쇄원칙)이미 작동하는 .. 더보기
[Unity] Profiling Unity ProfilingUnity Profiler는 게임 성능을 분석하고 최적화하기 위한 도구다. 주로 CPU, GPU, 메모리, 렌더링 성능 등을 분석한다.여기에서 플레이 모드를 활성화하면 Profiler 창에 성능 데이터가 표시된다. 주요 프로파일링 카테고리는 다음과 같이 볼 수 있다.CPU Usage함수 호출 시간과 CPU 사용량을 분석.스크립트에서 가장 많이 사용된 메서드나 코루틴을 확인 가능.GPU UsageGPU 렌더링 관련 데이터 분석.렌더링 시간이 높은 쉐이더나 오브젝트를 확인.Memory메모리 사용량 및 할당 정보를 확인.가비지 컬렉션(Heap Allocations) 문제 파악.Rendering드로우 콜, 배치 수 및 오브젝트 렌더링 최적화.Physics물리 시뮬레이션 시간 분석.복잡.. 더보기
Rider로 Unity Debugging 디버그 빌드 설정Project Settings > Player > Configuration > Scripting Backend 설정을 Mono로 설정한다.Scripting BackendUnity는 C#으로 작성된 스크립트를 실행하기 위해 스크립트 런타임을 제공한다. Scripting Backend는 스크립트를 실행할 때 사용하는 런타임 기술을 말한다. Unity에서는 다음 두 가지 주요 옵션이 있다.디버깅 환경에서 사용하는 MonoScript Debugging이 가능한 환경에서 Mono를 사용하면, 코드의 동작을 더 쉽게 추적하고 수정할 수 있다.IDE와 완벽히 연동되어 Breakpoint, Call Stack 등 디버깅 기능을 활용할 수 있다.최적화 및 배포 환경에서 사용하는 IL2CPP최적화된 성능과.. 더보기
[Unity] DLL과 PDB 언리얼 엔진 그리고 유니티 엔진을 사용해서 게임 프로그래밍을 할 때, 가장 길게 느껴지는 시간은 아무래도 컴파일 시간이다.물론, 코딩을 잘해서 머릿속으로 코드를 돌려보고 작동까지 볼 수 있는 실력이 된다면 괜찮겠지만 안타깝게도 아직 그정도 수준까지는 멀었다.이번에는 유니티에서 이러한 컴파일 시간을 줄여보는 방법에 대해 공부해보았다.우선 DLL 파일과 PDB 파일에 대해 알아야한다.1. DLL;Dynamic Link Library라이브러리란, 컴퓨터 프로그램에서 사용하는 비휘발성 자원(함수, 데이터, 타입 등)의 모임을 뜻한다.DLL은 동적으로 링크되고 실행되는 재사용 가능한 코드 모듈을 의미한다. 즉, 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는 라이브러리이다. 그리고 유니티에서 D.. 더보기
[Unity] 컴파일 과정 유니티의 스크립트와 스크립트 외의 다른 리소스들의 컴파일 과정을 살펴보자.스크립트1. 스크립트 분류Asset 폴더 내 스크립트를 Assembly Definition Files (.asmdef)와 디렉토리 구조에 따라 그룹화한다.예를 들어, Assets/Scripts에 있는 스크립트는 기본적으로 Assembly-CSharp.dll이라는 하나의 DLL로 컴파일 된다.2. 컴파일유니티는 Roslyn 컴파일러를 사용하여 C# 코드를 DLL 파일로 변환한다.3. 출력이렇게 생성된 DLL 파일은 Project 폴더의 Library/ScriptAssemblies 폴더에 저장된다.Assembly-CSharp.dll: 사용자가 작성한 대부분의 스크립트가 포함된 메인 DLL.Assembly-CSharp-Editor.dll.. 더보기
[Unity] 오브젝트 검색 방법 https://waterglass0105.tistory.com/110 [Unity] TagUnity에서 Tag는 게임 오브젝트를 식별하고 분류하기 위한 문자열 라벨이다. Tag를 사용하면 특정 오브젝트 그룹에 쉽게 접근하거나 필터링할 수 있다.예를 들어, 적 오브젝트는 "Enemy" 태그를, 플레waterglass0105.tistory.com Tag 내용을 정리하면서, 지나친 Tag 사용, 잦은 Tag 기반 검색이 시스템에 좋지 않은 영향을 줄 수 있다고 언급하며 다른 검색 방법에 대해 소개한 바 있다. 이번에는 FindWithTag나 FindGameObjectsWithTag 대신 사용할 수 있는 대체 검색 방법들에 대해 알아보고자 한다. 1. Layer 기반 검색https://waterglass0105.. 더보기