C#(33)
-
[Unity] C# 접근 한정자 + 인스펙터에서 변수 확인하기 (Debug Mode)
C#의 접근 한정자(Access Modifier) 찾아보니, C#은 대략 다음과 같이 6개 종류 정도의 접근한정자(Access Modifier)가 있는 것 같다. public class Test : MonoBehaviour // 유니티에서 작성함 { public float publicVar; private float privateVar; protected float protectedVar; internal float internalVar; protected internal float ptItVar; private protected float prprVar; } .NET C# 가이드 문서를 보면 다음과 같이 설명이 되어 있다. 여기서 "동일한 어셈블리 내에 있는" 이런 문장은 같은 프로젝트 파일 내에 있다..
2022.02.15 -
[C#] 프로퍼티(Property)
*이 글은 책을 바탕으로 공부한 글입니다. 문제 시, 삭제하겠습니다. 1. 프로퍼티(Property) 외부에서 어떤 클래스 내부의 변수를 사용할 때, 해당 변수를 이곳 저곳에서 가져가 사용하는 곳에서마다 조건을 보는 것은 비효율적일 수 있습니다. 일반적으로는 다음과 같이 원할 겁니다. 변수의 값이 항상 올바르도록 강제하여, 할당된 값을 확실히 하길 바랄 경우 예를 들어, 플레이어 체력을 0 ~ 100에만 값 할당하기, 정해진 조합만을 허용하는 문자열 변수 만들기 등 변수의 값이 변경되었을 때를 감지하여, 이 값에 영향을 받는 다른 함수나 동작을 실행하길 원할 경우 이에 활용할 수 있는 것이 바로 프로퍼티(Property)입니다. 2. 프로퍼티의 사용 예시 1) 정해진 범위 내의 값만 할당하기 대략적인 사..
2022.02.15 -
[Unity, C#] 구조체(struct)는 왜 new 문법을 지원할까?
C#에서 구조체는 값 형식(value type)이기에, 스택(stack)에 데이터를 담고 있는 변수 체계다. 레퍼런스 형식(reference type)은 실제 데이터는 힙(Heap) 영역에 존재하고, 스택(Stack)에는 해당 데이터로 가는 주소를 담고 있는 변수 체계다. 결론적으로 Vector3, Vector2는 구조체이기에 지역 변수로 생성한 경우, 로직이 끝나는 블록(block)을 만나게 되면 자동 메모리 반납 처리가 된다. void Update() { Vector3 vec3 = new Vector3(); Vector2 vec2 = new Vector2(); } // 끝나는 블록을 만났으므로, vec3, vec2 메모리 반납 C#은 힙 할당을 하는 클래스 객체 생성과 헷갈리게 왜 이런 new 문법을..
2022.01.13