728x90

Csharp 7

[Unity C#] 파일 경로 분리와 경로 구분자 변환: 두 가지 접근법 비교

Unity에서 파일 경로를 다룰 때, 디렉토리 경로와 파일명을 분리하거나, 경로 구분자(\, /)를 통일해야 하는 상황이 자주 발생합니다.이번 포스트에서는 경로를 효율적으로 처리하는 두 가지 방법, System.IO.Path를 활용한 방식과 string.Substring을 활용한 방식을 비교하고, Unity 환경에 맞게 경로 구분자를 통일하는 팁을 함께 소개합니다.파일 경로 분리가 필요한 이유게임 개발에서는 파일 경로를 다루는 일이 필수적입니다. 아래와 같은 작업에서 디렉토리와 파일명을 분리해야 하는 경우가 자주 있습니다:특정 파일만 선택적으로 불러오기파일명을 기준으로 데이터를 처리하기경로에 특정 디렉토리를 추가하거나 변경하기파일 경로 분리 방법: 두 가지 접근법파일 경로를 처리하는 방법은 크게 두 가지..

유니티 엔진 / 씨샵(Unity Engine/C#) 블로그 글 모음 (사이트맵) (2024.11.26)

.네이버 블로그에 2019년 2월부터 2024년 11월까지 쓴 유니티 엔진 / 씨샵 관련 포스트 모음입니다.주기적으로 사이트맵 갱신됩니다.Unity Engine / C# 관련 포스트[Unity] 유니티 커스텀 패키지 만들기, 추가하기 + 예시 패키지 (Hierarchy Decorator)https://m.blog.naver.com/sorang226/223672364624[Unity] LOD Bias 가 뭔가요? "Active LOD bias is 0.7 Distances are adjusted accordingly." 메시지 의미https://m.blog.naver.com/sorang226/223665242570유니티 엔진도 드디어 언리얼처럼 공식 비헤이비어 트리를 제공한다https://m.blog.na..

[Unity] C# Finalizer 와 Garbage Collector 동작에 대한 정리

C++의 소멸자(Destructor)와 C#의 Finalizer의 공통점과 차이점 공통점 문법적으로 ~Class() {...} 로 코딩 클래스 객체가 소멸될 때 리소스를 해제하기 위해 사용 차이점 C++ 의 소멸자는 delete myObj; 와 같이 명시적으로 호출 시기를 정할 수 있음. C# 의 소멸자는 C++와 구분하기 위해 Destructor대신 Finalizer로 부름. Finalizer는 개발자가 그 호출을 명시적으로 결정할 수 없고, Garbage Collection 메커니즘에서 호출. 좀 더 구체적으로, C# 클래스에 Finalizer 가 존재하면, 해당 객체의 생성자 호출시 Finalization Queue라는 QC 내부 큐에 레퍼런스 추가. 이후, Managed Heap이 차서 GC처리를..

[Unity] Flags Attribute

enum 타입 앞에 [Flags] 어트리뷰트를 붙이면 Inspector 에서 여러 개를 선택 가능한 Bit Flags 처럼 사용할 수 있는데, 이 때 유의해야할 점. None = 0 을 앞이 두어서 아무것도 선택되지 않은 타입을 두는 게 좋다. 각 Enum 값들은 1, 2, 4, 8, ... 처럼 2진수 bit flag 한 자리씩 값을 갖는 숫자로 지정해줘야 한다. (자연수로만 구성하면 하나를 선택했을 때 다른 값도 같이 활성화되는 오동작을 할 수도 있음.) 아래는 샘플 코드. [Flags] public enum ETest { None = 0, Option1 = 1

C# 리플렉션(Reflection) 개념잡기

C#에서 리플렉션(Reflection) 기능은 프로그램이 런타임 중에 동적으로 객체의 타입 정보를 획득해서 접근하고 활용할 수 있는 기능. 리플렉션은 주로 System.Reflection 네임스페이스 내의 기능들을 사용하여 런타임에 타입 정보를 동적으로 검사하거나 조작하는 것. GetType() 메서드는 객체의 런타임 타입을 가져오는 것으로, 이것도 정적인 타입 정보를 가져오는 것이므로 일반적으로는 리플렉션을 사용했다고 보기 어렵. System.Reflection 네임스페이스의 기능을 사용하는 경우에야 리플렉션을 사용한 것으로 간주하며, typeof 연산이나 GetType() 메서드는 해당 범주에 포함되지 않는 것으로 볼 수 있음. 왜 이름이 리플렉션(Reflection)일까? C#의 리플렉션(Refle..

C#의 역사. C# 버전 1.0 부터 C# 버전 11 까지

C# 언어의 각 버전별 주요 릴리스에 대한 기록을 제공하는 문서를 소개하고 기록해둡니다. 2002년 1월 Visual Studio.Net 2002와 함께 릴리스된 C# 버전 1.0 부터, 2022년 11월 C# 버전 11 까지 갱신되어있습니다. 한글로 작성된 문서라 훑어보기 좋습니다. C# 의 역사 공식 문서 https://learn.microsoft.com/ko-kr/dotnet/csharp/whats-new/csharp-version-history C#의 역사 - C# 가이드 이 언어의 초창기 버전은 어떤 모습이었으며 이후 어떻게 변했는가? learn.microsoft.com 아래 문서는 컴파일러 팀의 현재 상태와 진행 중인 작업을 정리해둔 문서입니다. 작업 진행, 기능 추가/제거 및 기능에 대한 작..

[C#] Null 조건부 연산자 ?. (null conditional operators)

Null 조건부 연산자. 물음표와 마침표를 연결해 사용합니다. 영어로는 Null conditional operators. Something?.Member 이렇게 사용하는데, null 조건부 연산자는 피연산자가 null이 아닌 것으로 평가되었을 때만 멤버를 엑세스 합니다. null 조건부 요소 연산자는 아래처럼 씁니다. 마찬가지로 피연산자가 null이 아닌 것으로 평가되었을 때 요소를 엑세스 합니다. ?[] 조건부 멤버나 요소 액세스 작업의 한 체인의 작업에서 null을 반환하면 나머지 체인은 실행되지 않습니다. // null 조건부 연산자 예시 A?.B.C(); A?.B?.Do(C); A?.B?[C]; // null 조건부 연산자를 사용하지 않았을 경우 if (null != A) A.B.C(); if (..

728x90
반응형