배열은 같은 데이터형의 변수들의 집합이다. Array 스크립트를 만들어주었다.
public int[] numbers = { 1, 2, 3 };
라고 적으면 public 이기 때문에 유니티에 노출되고 GameManager를 선택하면 밑에 list가 생긴 것을 확인 할 수가 있다.
numbers를 펼쳐보면 스크립트에서 작성한 숫자가 그대로 유니티에 나오게 된다.
for문을 통해 배열의 배열의 모든 원소를 출력할 수 있다.
for(int i = 0; i < numbers.Length; i++)
{
Debug.Log($"{numbers[i]}");
}
numbers.Length
는 numbers 배열의 길이를 말한다. (정수로 나타난다)
numbers[i]
는 numbers 배열의 i번째 원소를 의미한다.
주의사항 1
배열을 사용할때 배열의 원소는 0부터 시작한다. 그래서
1번째 원소는 numbers[0];
2번째 원소는 numbers[1];
3번째 원소는 numbers[2];
위의 예시 같은 경우는 3개의 값만 가지고 있기 때문에 배열의 길이는 3이다.
그래서 numbers[3];
을 쓰면 numbers배열의 범위를 벗어나는 4번째 원소를 의미하기 때문에 에러난다.
이상태로 플레이하면 1, 2, 3이 출력된다.
그러나 public이기 때문에 유니티에서 숫자를 바꾸고 저장 할 수 있다.
현재 1, 2, 3이지만
Element 0 -> 10
Element 1 -> 20
Element 2 -> 30
으로 바꾼뒤 저장하고 플레이를 해보자.
스크립트에서 값을 바꾸지 않았지만 유니티에서 값을 바꿨기 때문에 값이 다르게 나온다. 그렇기 때문에 항상 Inspector창을 살펴보는게 좋다.
다시 1, 2, 3으로 되돌려준다.
정수만 담을 수 있는 것은 아니다.
float[] floatAarray = { 0.54f, 7.4124f, -3.14159562f };
string[] stringArray = { "Hello", "Unity", "Engine" };
bool[] boolArray = { true, false, 1 <= 2 };
이런식으로 같은 데이터형의 변수들을 담을 수 있다.
특정 원소의 값을 바꾸고 싶으면 해당 배열인덱스의 값을 같은 데이터형의 값을 넣어주면 된다.
numbers[0] = 100;
이렇게 작성하고 출력하면 100이 출력된다.
int[] numbers2 = new int[3];
라고 적으면 길이가 3인 정수형 배열을 만들고 모든 원소를 0으로 초기화 시켜준다. 배열을 만들면 C#에서는 자동으로 0으로 초기화 시켜준다.
주의사항 2
int[] intArray;
intArray = { 11, 22, 33, 44 };
이렇게 선언은 못한다. new int[배열길이];
를 알려주거나 값을 넣어주어야 한다.
int[] abc = {1, 2, 3}
는 명시적 선언이고
int[] xyz = new int[3]
는 암시적 선언이다.
int[] ijk = new int[] { 10, 20, 30, 40, 50, 60 };
는 명시적 + 암시적 선언이다.