본문 바로가기

멋쟁이사자처럼 유니티 부트캠프 7회차 추가학습(C#기초 GameObject 접근 / 유니티 )

@salmu2025. 5. 21. 09:18
반응형

[7회차 수업내용]

 

 

1.1 왜 struct는 상속이 안 될까?

  • 값 타입은 Stack 메모리에 저장됨 (복사됨)
  • 클래스처럼 유연한 계층 구조가 필요 없는 단순 데이터용
  • 상속까지 허용하면 값 타입의 장점(작고 빠름, 복사 용이)을 해침
  • 복사될 때마다 메모리를 중복으로 차지하기 때문에 모든걸 struct로 만들면 메모리 터짐
  • struct작고 가벼운 데이터 구조
  • 클래스(class)는 복잡한 기능, 상속, 다형성을 위한 구조

 

 

1.2 Array와 List 

항목 array (T) List<T>
크기 변경  불가능 (고정 크기) 가능 (자동으로 늘어남) = 동적 배열
선언 시 크기 지정 필요함 필요 없음 (필요 시 자동 증가)
요소 추가/삭제 불편 (직접 구현해야 함) Add(), Remove() 등 지원
성능 더 빠름 (고정 구조) 약간 느릴 수 있음
사용 시기 크기 고정, 속도 중요할 때 유동적 개수, 편의성이 중요할 때
공간 효율성 메모리 고정, 더 가벼움 약간 더 무거움

 

 

2. 유니티 C#

2.1 직렬화 Serialize / Inspector 표시 여부

 

직렬화 = Serialization = 메모리에 있는 데이터를 → 파일/에셋/데이터 형태로 저장 가능하게 만드는 것

 

[SerializeField] ->코드는 감추고, Unity의 인스펙터만 노출 하고 싶을 때 

변수는 외부 접근 못 하게(private),
대신 에디터(Inspector)에서는 보여줘서 디자이너가 수정 가능하게 하고 싶을 때 사용
  • C# 기본 문법에는 없는 Unity만의 특수 기능
  • [SerializeField]는 아무 효과도 없습니다 (Unity 외에서는 무시됨)
  • 대신 C#에서는 [DataContract], [JsonProperty], [XmlElement] 등 다른 직렬화 어트리뷰트를 사용합니다

 

 

반응형

 

 

2.2 기타 직렬화 관련 선언

조합 인스펙터에 표시됨? 설명
public int number; 표시됨 퍼블릭 변수는 기본적으로 인스펙터에 표시됨
private int number; 안 보임 private는 기본적으로 인스펙터에 안 보임
[SerializeField] private int number; 표시됨 private이지만 강제로 인스펙터에 표시됨
[HideInInspector] public int number; 안 보임 public이지만 인스펙터에 숨김
[NonSerialized] public int number; 안 보임 public이지만 직렬화 대상에서 제외됨, 인스펙터에도 안 나옴

 

2.2 Component 

 

 

 

 

3. 기타

3.1 rider - 오류 해결 단축키 ⌥ + ⏎

🔴 빨간 줄 + 전구 아이콘(옵션 클릭) IDE가 문제를 감지해서 자동 해결 옵션을 제안해줌
⌥ + ⏎ (Option + Enter) Rider에서 자동 해결 단축키 — 필요한 using을 자동 추가함

 

 

3.2 유니티 & C# 접근 제한자를 안적으면 private

3.3 유니티의 모든 오브젝트는 GameObject 의 데이터 타입

 

3.4 <> 와 [] 는 언제 쓰나

<> 제네릭(Generic) 자료형(type) 지정 어떤 타입을 사용할지 지정함 List<int>, Dictionary<string, int>
[] 배열(Array) 또는 인덱스 배열 선언 또는 값 접근 배열 만들기 또는 특정 위치 값 접근 int[] arr = new int[3];, arr[0]

 

 

<>  타입 지정용 (제네릭)

List<string> names = new List<string>();
names.Add("Alice");
Console.WriteLine(names[0]);  // 출력: Alice

 

  • <> 안의 string리스트 안에 어떤 타입을 넣을지 지정하는 것
  • List<int>면 정수만, List<string>이면 문자열만 들어갈 수 있음

 

[ ]  배열 선언 & 값 접근

 

int[] scores = new int[3];   // 정수 배열 만들기
scores[0] = 100;             // 배열 첫 번째 값 설정
Console.WriteLine(scores[0]); // 출력: 100
반응형
salmu
@salmu :: SMU 각종 기록

목차