어제( 11월 30일)은 러닝 비버라는 스마일게이트에서 주최하는 인디 게임 축제에 갔다와서 푹 쉬었다.
정말 즐겁고, 새로운 경험이 되는 시간이었고 시간이 난다면 이에 대해서는 따로 쓸 예정이다.
https://burningbeaver.com/main
Burning Beaver
인디게임&컬처 페스티벌
burningbeaver.com
배열
기본 배열
변수 하나마다 공간을 하나씩 할당하는 것은 효율적이지 않은 일이다. 그래서 배열을 사용한다.
배열은 기본적으로 [] 로 만든다 예시를 들어보자면
int[] a = new int[5];
a라는 이름의 5개의 방을 가진 배열을 만든 것이다.
그리고 이 각각의 방에는 아직 아무것도 들어가 있지 않은 상태인 Null 상태라고 볼 수 있다.
각각의 공간에 값을 넣어 주기 위해서는
int[] a = new int[5] { 1,2,3,4,5 };
이렇게 1, 2, 3, 4, 5라는 int형 자료형을 넣을수도, string 타입 자료형도 넣을수 있다.
string[] a = new string[1] { "안녕하세요" };
기본적으로 배열은 호텔 방을 만든다고 이해하면 편하다.
*C#에서는 기본적으로 기본값인 0이 들어간다.
다차원 배열
다차원 배열은 2차원부터 N차원까지의 배열을 의미한다. 우리는 32차원, 40억개의 원소, 2G 정도까지 사용 가능하지만 보통 3차원까지 사용한다.
만드는 방법은 다음과 같다. (2차원 배열)
int[,] a = new int[2,2];
위 코드는 2X2인 공간을 만들었다고 생각하면 된다.
가변 배열
가변 배열은 배열 안에 크기가 각각 다를 수 있는 배열을 넣는 것이다.
다음과 같이 사용한다.
int[][] A = new int[3][];
3층인 호텔을 짓고, 그 안에 크기가 각각 다를 수 있는 배열을 넣어준 것이다.
예시로 사용법과 호출법을 알아본다면 아래와 같다.
각각 호텔의 층수에서 크기가 다른 배열을 만들고
int[][] A = new int[3][];
A[0] = new int[3] { 1, 2, 3 };
A[1] = new int[5] { 4, 5, 6, 7, 8 };
A[2] = new int[4] { 9, 10, 11, 12 };
Debug.Log(A[2][2]);
이렇게 호출하게 된다면 11의 값이 나오게 된다.
* 배열은 모두 0부터 시작이다.
컬렉션
기본
컬렉션은 하나의 이름아래 여러개의 데이터를 묶어서 관리하는 것이다.
배열과 다른점은 크기가 정해져 있지 않다는 점, 즉 배열은 크기가 정해진 호텔이고 컬렉션은 기차놀이를 생각하면 된다.
종류 : Dictionary, List, Queue, SortedList, Stack, ArrayList, Hashtable 등
대표적으로는 Dictionary , List를 사용한다
List
리스트는 배열에 컬렉션의 특징을 더한 것이라고 생각하면 된다.
List<string> names = new List<string>(5);
names.Add("배고프다");
names.Add("졸리다");
names.Insert(1, "따듯하다");
names.Remove("졸리다");
names.RemoveAt(1);
names.Contains("배고프다");
names.IndexOf("배고프다");
names.Clear();
- Add : 공간 안에 데이터를 집어넣는 것, 넣은 순서대로 저장된다.
- Insert : 순서를 정해 데이터를 "끼워" 넣는 것 그 이후에 있던 순서는 뒤로 밀린다.
- Remove : 특정 데이터를 지우는 것
- RemoveAt : 특정 순서에 있는 데이터를 지우는 것
- Contains : 특정 데이터가 들어있는지 확인하는 것
- IndexOf : 특정 데이터의 인덱스 순서를 확인하는 것
- Clear : 리스트를 모두 비우는 것
Dictionary
사전, 키 벨류를 저장하는 장소이다. Key -Value
Key - Value란 다음과 같다.
예를들어, 네이버 사전에서 '새벽'을 검색하면 '먼 동이 틀 무렵'이라는 결과가 나온다.
여기서 '새벽'이 Key, '먼 동이 틀 무렵'이 Value이다.
Dictionary<string, string> ExDictionary = new Dictionary<string, string>() ;
ExDictionary.Add("새벽", "먼 동이 틀 무렵");
ExDictionary.Add("게임", "만들고 싶은 것");
ExDictionary.ContainsKey("새벽");
ExDictionary.ContainsValue("만들고 싶지 않은 것");
ExDictionary.Remove("게임");
ExDictionary.Clear();
- Add : 새로운 Key -Value를 추가하는 것
- Remove : Key - Value를 삭제하는 것
- ContainsKey : 어떤 Key 값이 있는지 확인하는 것 (참/거짓)
- ContainsValue : 어떤 Value 값이 있는지 확인하는 것 (참/거짓)
- Clear : 모든 값을 삭제하는 것
foreach
반복문의 한 종류로, 배열 컬렉션에 관계없이 배열, 컬렉션 안의 모든 원소를 모두 꺼내서 써 보는 것
foreach { 데이터 타입 변수 명 in 배열명/컬렉션명 } 으로 사용한다.
int[] a = { 1, 2, 3};
foreach( int number in a)
{
Debug.Log(number);
}
- KeyValuePair<> : Dictionary 안의 값을 foreach로 읽을 때에 사용
- Keys : Dictionary 안의 값을 읽을때 마찬가지로 사용
두 방법 모두 똑같은 결과를 얻을 수 있다.
*2차원 이상의 배열에서도 주의해야 함,
* 가변 배열에서는 foreach문 안에 foreach 문을 한 번 더 사용해서 확인해야 한다.
(나중에 코드로 써볼 것)
Enum
Enum은 저장되는 데이터에 이름을 붙여 읽기 편한 코드를 만드는 것이다. 내부적으로는 정수형과 같다.
예를들어 0에는 햄버거, 1에는 피자, 2에는 물를 저장하는 것이고, 쓸 때에는 글씨로 쓰지만 저장은 0,1,2로해
저장의 효율성을 높이는 것이다.
using System;
enum food
{
hamburger,
pizza,
warter
}
class Program
{
static void Main()
{
// 열거형 값을 변수에 할당
food myLunch = food.hamburger;
// 출력
Console.WriteLine(myLunch); // hamburger
Console.WriteLine((int)myLunch); // 0
// 열거형 값 비교
if (myLunch == food.hamburger)
{
Console.WriteLine("점심은 햄버거입니다.");
}
}
}
알아두면 좋은 것들
*괄호
() : 보통 수식의 우선순위를 바꾸거나 함수를 호출함
{} : 코드 블럭을 만들어 나눌 때 사용
[] : 몇 번째 방인지를 나눌 때 사용
다른 사용법도 있다.
* Count는 괄호를 쓰지 않는다.
*형변환(캐스팅)
형변환은 변수의 데이터 타입을 다른 데이터 타입으로 변환하는 것이다. 크게 암시적, 명시적 방법으로 나뉜다.
더 알아봐야 하는것 : 코루틴, offset, struct, 형변환
'TIL' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL회고] Unity 게임개발 3기 15일차 (0) | 2024.12.03 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] Unity 게임개발 3기 14일차 (0) | 2024.12.02 |
[멋쟁이사자처럼 부트캠프 TIL회고] Unity 게임개발 3기 11일차 (3) | 2024.11.29 |
[멋쟁이사자처럼 부트캠프 TIL 회고] Unity 게임개발 3기 10일차 (0) | 2024.11.28 |
[멋쟁이사자처럼부트캠프 TIL회고] Unity 게임개발 3기 9일차 (0) | 2024.11.27 |