본문 바로가기

C#62

필드 (Field) 와 속성 (Property) 에 대해서 C# 에서 객체의 데이터를 저장하는 방법으로 필드(Field) 와 속성(Property) 이 있습니다.두 개념은 비슷해 보이지만, 실제로는 중요한 차이점이 있으며, 속성을 사용하는 이유도 분명합니다.이 글에서는 둘 간의 차이 그리고 더 나아가 람다 표현식으로 표현하는 방법까지 알아보도록 하겠습니다. 필드 (Field) 란?필드는 클래스 내부에서 데이터를 저장하는 가장 기본적인 방법입니다. 보통 private 접근 제한자로 선언하여 외부에서 직접 접근할 수 없도록 합니다. 이렇게 하면 객체 내부에서만 값을 조작할 수 있어 보호가 가능하지만, 다른 코드에서 값을 변경하거나 읽으려면 별도의 메서드를 구현해야 합니다.예를 들어, name이라는 필드를 직접 사용하면 외부에서 값을 가져오거나 변경할 수 없습니다. .. 2025. 3. 11.
event Action 을 활용한 이벤트 처리 게임을 만들다 보면 특정 상황에서 여러 객체가 동시에 반응해야 할 때가 많습니다. 예를 들어, 플레이어가 사망하면 게임 오버 화면이 표시되고, 점수가 저장되며, 배경음악이 멈추는 상황이 있을 수 있습니다. 이를 효율적으로 관리하기 위해 event와 Action을 활용한 이벤트 시스템을 사용할 수 있습니다.  event Action의 개념어떤 마을에서 "불이야!" 라고 외쳤다고 가정해봅시다.이 소리를 들으면 각자의 역할을 가진 사람들이 자동으로 반응합니다. 소방관은 불을 끄러 출동하고 ... 이웃들은 대피하며 ...방송국은 긴급 속보를 내보냅니다.  즉, 불이 난 사람이 일일이 지시하지 않아도 "불이야!" 라는 신호만 전달하면 관련된 사람들이 각자 반응하는 구조입니다.게임에서도 동일한 개념을 적용할 수 있.. 2025. 3. 11.
Static 과 Instance ( feat.Singleton ) static 변수와 일반 변수의 차이와 접근 방식을 이해하는 것이 중요합니다. 특히, static 변수는 클래스 단위에서 관리되고, 일반 변수는 객체(인스턴스) 단위에서 관리되므로, 서로의 접근 방식이 다릅니다. 이번 글에서는 static 변수와 일반 변수의 차이를 이해하고, 접근 방식을 정리해보겠습니다. static 변수와 일반 변수의 차이static 변수는 클래스 소속public class Example{ public static int StaticValue = 100; // static 변수} StaticValue는 Example 클래스 자체에 속해 있으며, 객체를 만들지 않고 접근해야 합니다.위에서 언급한 클래스 단위에서 관리된다는 말은 객체를 만들지 않아도 바로 쓸 수 있다라는 말로 이해하.. 2025. 3. 11.
Delegate 이해하기 Delegate란?Delegate(대리자)는 C#에서 함수의 참조를 저장하고 호출할 수 있는 객체입니다. 이는 C++의 함수 포인터와 유사하지만, 더 안전한 방식으로 관리됩니다.Delegate를 사용하면 특정 메서드를 미리 지정하지 않고 실행 시점에서 메서드를 동적으로 호출할 수 있습니다. 이를 통해 코드의 유연성과 확장성을 높일 수 있습니다. Delegate 선언 및 사용Delegate를 선언하는 기본적인 방법은 다음과 같습니다.// Delegate 선언public delegate void MyDelegate(string message);// Delegate를 사용하는 메서드 정의public class Example{ public static void PrintMessage(string messa.. 2025. 3. 10.
전역으로 관리되는 class 를 만들고 싶을 때 (singleton) 게임을 만들다 보면 클래스를 넘나들며, 전역적으로 접근해서 사용하고 싶은 데이터들이 존재하게 됩니다.이때 어떤 형태로 클래스를 만들 것인가에 대한 고민이 생기게 됩니다.그래서 이번에 이 부분에 대해 한번 다뤄보겠습니다. 정적(static) 클래스로 만들기유니티가 아닌 일반적인 C# 프로젝트에서는 전역적으로 데이터를 관리하기 위해 정적 클래스를 사용할 수 있습니다.public static class GameManager{ public static int score;} 이렇게 하면 GameManager.score로 어디서든 간편하게 접근할 수 있습니다. 하지만 문제는 유니티에서는 이것만으로 충분하지 않다는 점입니다. 정적 클래스의 단점• 정적 클래스는 특성상 애초에 인스턴스를 만들 수 없습니다.• .. 2025. 3. 10.
Vector3 pos = new Vector3() 의 이해와 대안 유니티에서 Vector3는 struct(구조체)로 정의되어 있기 때문에 값 타입으로 동작합니다.따라서 new Vector3(); 를 사용할 때의 동작 방식은 일반적인 참조 타입(class)과 다릅니다.이번 글에서는 Vector3가 스택 메모리에서 어떻게 처리되는지 살펴보겠습니다. new Vector3() 의 의미Vector3 pos = new Vector3(); 이 코드는 스택(Stack) 메모리에서 Vector3 공간을 만들고, 기본값(0,0,0)으로 초기화한 후, pos 변수에 복사하는 과정을 포함합니다. 제일 먼저 new Vector3(); 가 실행되면서 스택(Stack) 메모리에 Vector3 구조체 공간을 생성하고, 기본값(0,0,0) 으로 초기화 합니다.그 후 Vector3 pos 변수 선언에.. 2025. 3. 10.