오늘은 동일한 타입의 데이터를 효율적으로 묶어서 관리할 수 있는 배열(Array)에 대해 정리해 보겠습니다. 유니티 개발에서 인벤토리 슬롯이나 스테이지 정보처럼 고정된 데이터를 다룰 때 필수적인 개념입니다.
배열은 메모리 공간에 데이터를 연속적으로 나열하여 고정시켜 놓고 사용하는 자료구조입니다. 가장 큰 특징은 한 번 크기를 정하면 나중에 늘리거나 줄일 수 없다는 점입니다.
배열 안의 각 칸을 요소(Element)라고 부르며, 각 칸에는 타입별로 기본값이 자동으로 들어갑니다.
ex) 타입별 기본값 설정
int 배열 = 0
float 배열 = 0f
bool 배열 = false
string 배열 = null
배열은 번호표인 인덱스를 통해 데이터에 접근합니다. 여기서 주의할 점은 숫자가 1이 아닌 0부터 시작한다는 것입니다.
첫 번째 칸: 인덱스 0
마지막 칸: 배열 길이(Length) - 1
접근 방식: 배열이름[인덱스] 형태
자주 하는 실수 중 하나가 마지막 요소에 접근할 때 arr[arr.Length]라고 쓰는 것인데, 인덱스는 0부터 시작하므로 반드시 arr[arr.Length - 1]로 접근해야 에러를 방지할 수 있습니다.
배열을 만드는 방법은 크게 두 가지가 있습니다.
크기만 지정하기: new 타입[길이]를 사용하여 칸의 개수를 고정합니다.
값으로 바로 만들기: 중괄호 {} 안에 초기값을 넣어 선언과 동시에 값을 채웁니다.
// 1. 크기만 지정하여 선언 (내부는 기본값인 0으로 채워짐)
int[] scores = new int[5];
// 2. 선언과 동시에 중괄호를 이용해 초기값 할당 (칸 개수는 자동으로 3개가 됨)
string[] monsters = { "슬라임", "고블린", "오크" };
// 3. 선언 후 나중에 새로운 배열 객체를 할당하는 경우
float[] speeds;
speeds = new float[] { 1.5f, 2.0f, 3.5f };
배열의 값을 수정할 때는 크게 세 가지 패턴이 자주 쓰입니다.
덮어쓰기: 특정 인덱스에 새로운 값을 대입합니다 (예: 인벤토리 아이템 교체).
누적: 기존 값에 숫자를 더합니다 (예: 스테이지 점수 합산).
토글(반전): bool 값을 반대로 바꿉니다 (예: 퀘스트 클리어 여부 스위치).
using UnityEngine;
public class MyInventory : MonoBehaviour
{
// 크기가 5인 문자열 배열 선언
string[] inventory = new string[5];
// 초기 아이템 목록
string[] fieldItems = { "물약", "녹슨 검", "금화" };
void Start()
{
// 1. 배열 초기화 (모든 슬롯을 비어있음으로 설정)
for (int i = 0; i < inventory.Length; i++)
{
inventory[i] = "비어있음";
}
// 2. 특정 인덱스에 데이터 쓰기 (덮어쓰기 패턴)
inventory[0] = fieldItems[0]; // 0번 슬롯에 물약 넣기
// 3. 배열 순회하며 출력 (읽기)
Debug.Log("--- 현재 인벤토리 상태 ---");
for (int i = 0; i < inventory.Length; i++)
{
// 인덱스는 0부터지만 사용자에게는 1번부터 보여주기 위해
Debug.Log((i + 1) + "번 슬롯: " + inventory[i]);
}
}
}
오늘은 데이터를 묶음으로 관리하는 배열의 기초를 배웠습니다.
배열은 고정된 크기를 가지며 인덱스가 0부터 시작한다는 점이 핵심입니다. 강사님이 익숙해지면 숫자를 0부터 세게 될거라고 했는데 그만큼 익숙해질 수 있도록 복습을 자주해겠다고 느꼈습니다 ㅎㅎ