반응형
[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반응형
'프로그래밍 > 유니티 부트캠프' 카테고리의 다른 글
| W3Schools C# 개인학습 (WhileLoop->Break & Continue) (0) | 2025.05.21 |
|---|---|
| W3Schools C# 개인학습 (String Concatenation -> Swtich) (0) | 2025.05.21 |
| W3Schools C# 개인 학습 (syntax -> strings) Casting / 연산자 % == != && || ! . (1) | 2025.05.20 |
| 멋쟁이사자처럼 유니티 부트캠프 6회차 추가학습(캐릭터 움직이기 / 깃 허브 / 유니티 C# 기초) (0) | 2025.05.20 |
| 멋쟁이사자처럼 유니티 부트캠프 5회차 추가학습(유니티 에디터 알아보기 / 게임 오브젝트 활용) (2) | 2025.05.20 |