학습 매체 : 책
책이름 : 레트로의 유니티 게임 프로그래밍 에센스
저자 : 이제민
본 내용은 해당 강의 내용을 공부하면서 정리한 글입니다.
배열(array)은 나열된 여러 값을 하나의 변수로 다룰 수 있는 타입이다. 배열은 일렬로 나열된 방을 가진 건물이라고 생각할 수 있다.
방문마다 호실(순번)이 표시되어 있고, 각 방마다 값 하나가 들어갈 수 있다. 호실 번호를 알면 그 방으로 찾아가 값을 가져오거나 변경할 수 있다.
선생님이 학생의 점수를 저장하고 출력하는 예를 가정하자.
학생의 점수를 다음과 같은 방식으로 저장하면 학생 수가 많아질수록 점수 관리가 더 힘들어진다.
void Start()
{
int student1 = 100;
int student2 = 90;
int student3 = 80;
int student4 = 70;
int student5 = 60;
Debug.Log(student1);
Debug.Log(student2);
Debug.Log(student3);
Debug.Log(student4);
Debug.Log(student5);
}
만약 학생 수가 5명이 아니라 100이면 변수를 100개 만들어 관리해야 한다.
이런 경우 배열을 사용해 나열된 값들을 하나의 변수로 다룰 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HelloCode : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
int[] students = new int[5];
students[0] = 100;
students[1] = 90;
students[2] = 80;
students[3] = 70;
students[4] = 60;
Debug.Log("0 번 학생의 점수 : " + students[0]);
Debug.Log("1 번 학생의 점수 : " + students[1]);
Debug.Log("2 번 학생의 점수 : " + students[2]);
Debug.Log("3 번 학생의 점수 : " + students[3]);
Debug.Log("4 번 학생의 점수 : " + students[4]);
}
}
int[] students;
int[ ] 처럼 타입 뒤에 [ ]를 붙여 해당 타입에 대한 배열 변수를 선언한다. 여기까지는 아직 배열에 방이 몇 개인지 정하지 않은 상태이다.
다음과 같이 선언과 동시에 students 배열에 방을 5개 마련했다.
int[] students = new int[5];
new 키워드는 어떠한 타입의 오브젝트를 새로 생성한다는 의미다.
new를 이용해 5개의 방을 가진 int 배열을 생성하여 students 변수에 할당했다.
각 방은 인덱스를 사용하여 접근할 수 있다. 특정 순번의 방(요소)에 접근할 때는 배열 변수에 대괄호 [ ]를 붙여 순번을 명시할 수 있다.
예를 들어, 다음과 같이 첫 번째 요소에 접근하여 100을 할당할 수 있다.
students[0] = 100;
students[0] = 100;
students[1] = 90;
students[2] = 80;
students[3] = 70;
students[4] = 60;
배열은 for 문과 좋은 조합을 이룬다.
for 문은 순번을 넘기면서 처리를 반복한다. 배열은 순번을 사용해 요소에 접근한다. 따라서 for 문을 사용해 순번을 넘겨가며 배열의 모든 요소에 접근할 수 있다.
앞의 예제에서는 일일이 순번을 명시하여 학생들의 점수를 출력했다. 이 부분을 for 문을 사용해 다음과 같이 수정할 수 있다.
void Start()
{
int[] students = new int[5];
students[0] = 100;
students[1] = 90;
students[2] = 80;
students[3] = 70;
students[4] = 60;
for (int i = 0; i < students.Length; i++)
{
Debug.Log((i + 1) + " 번 학생의 점수 : " + students[i]);
}
}
배열 타입의 변수는 내부에 Length라는 변수를 가지고 있다. Length의 값은 배열의 길이이다. 예제에서 students.Length의 값은 5이다.
결론적으로 예제의 for 문은 다음과 같이 동작한다.
i가 0번째부터 시작해서
i가 students.Length보다 작은 동안
i를 1씩 증가시키면서 students[i]에 접근
Length는 변수처럼 동작하지만 실제 구현은 변수가 아닌 프로퍼티이다. 쉽게 설명하기 위해 지금은 변수라고 하겠다.
다음 강의에서 계속~