
C#에서 이벤트(Event)는 특정 상황이 발생했음을 다른 객체에 알리는 데 사용되는 특별한 종류의 델리게이트(Delegate)입니다.
UnityEvent:
Unity에서 가장 흔하게 사용되는 이벤트 시스템입니다.
Inspector에서 직접 함수를 연결할 수 있도록 시각적인 인터페이스를 제공하여
디자이너나 비개발자도 쉽게 이벤트 핸들러를 등록할 수 있습니다.
Action 및 Func 델리게이트:
C#의 내장 델리게이트인 Action과 Func도 Unity 스크립트에서 자주 사용됩니다.
Action: 반환 값이 없는 메서드를 참조하는 델리게이트입니다.
Func: 반환 값이 있는 메서드를 참조하는 델리게이트입니다.
값 형식 (Value Type)
값 형식은 변수가 실제 데이터를 직접 저장하는 타입입니다.
이 데이터는 주로 스택(Stack) 메모리 영역에 할당됩니다.
변수에 값을 할당하면 실제 값이 복사됩니다.
즉, 한 변수를 다른 변수에 할당하면 데이터 자체가 복제됩니다.
참조 형식 (Reference Type)
참조 형식은 변수가 데이터가 저장된 메모리 주소(참조)를 저장하는 타입입니다.
실제 데이터는 주로 힙(Heap) 메모리 영역에 할당됩니다.
변수에 값을 할당하면 데이터의 참조(메모리 주소)가 복사됩니다.
즉, 한 변수를 다른 변수에 할당하면 두 변수가 동일한 메모리 위치를 가리키게 됩니다.
스택
데이터를 선입후출(LIFO - Last In, First Out) 방식으로 저장하는 메모리 영역입니다.
할당 방식:
컴파일 시점에 크기가 결정되는 정적 할당(Static Allocation) 방식을 사용합니다.
데이터 저장:
주로 값 형식(Value Type) 변수, 메서드 호출 정보(매개변수, 지역 변수, 반환 주소),
작은 크기의 임시 데이터가 저장됩니다.
힙
프로그램 실행 중에 크기가 동적으로 변경될 수 있는 데이터를 저장하는 메모리 영역입니다.
할당 방식:
프로그램 실행 중에 크기가 결정되는 동적 할당(Dynamic Allocation) 방식을 사용합니다.
데이터 저장:
주로 참조 형식(Reference Type) 객체의 실제 데이터가 저장됩니다. 스택에는 이 힙에 있는 객체의 메모리 주소(참조)만 저장됩니다.

struct (구조체)
class는 "설계도"를 통해 "객체(인스턴스)"를 힙에 생성하고, 이 객체를 참조를 통해 다룹니다.
생성자는 이 객체가 만들어질 때 초기화를 담당합니다.
class (클래스)
struct는 "설계도"를 통해 "객체(인스턴스)"를 스택에 직접 생성하며, 다룰 때마다 값이 복사됩니다.
struct의 생성자는 필드 초기화를 위해 사용되지만,
class의 생성자처럼 힙 할당을 유발하지는 않습니다.