목차 |
리스트 사용 법 Add 함수로 실시간으로 값을 추가할 수 있다 RemoveAt 함수로 실시간으로 원하는 방을 없앨 수 있다 간단하게 리스트 삭제하기 |
리스트 사용 법
using System.Collections.Generic; // public List<데이터 타입> 변수명 = new List<데이터 타입>(); //예를 들어서 int형의 경우 public List<int> scores = new List<int>();
using System.Collections.Generic
을 적어놓은 이유는 이 네임스페이스가 무조건 사용되어야 리스트를 사용할 수 있기 때문입니다.
.Generic
과 관련된 기능들은 C#에 나중에 추가된 기능들입니다. 리스트도 마찬가지로 나중에 추가되었기 때문에 .Generic
네임스페이스를 반드시 사용되어야 합니다.
List<데이터 타입>
이런 형식으로 사용되는 이유는 리스트는 여러가지 타입에 대응되기 때문에 꺽쇠에다가 사용할 데이터 타입을 적어야됩니다.
new List<데이터 타입>()
리스트는 클래스이기 때문에 new 키워드를 사용해서 찍어내야 합니다.
Add 함수로 실시간으로 값을 추가할 수 있다
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScoreManager : MonoBehaviour { public List<int> scores = new List<int>(); private void Update() { if(Input.GetMouseButtonDown(0)) { int randomNumber = Random.Range(0, 100); // Add 함수는 데이터 값을 추가해준다. scores.Add(randomNumber); } } }
간단한 실험을 위해 마우스 왼쪽 클릭
하면 0 ~ 100 까지 랜덤한 숫자를 리스트에 추가해주는 스크립트를 만들었습니다.
게임 오브젝트에 위 스크립트를 넣고 게임을 실행시켜서 마우스 왼쪽 클릭하면 어떻게 값이 추가되는지 확인 해봅시다.

마우스 왼쪽 클릭을 3번 했습니다.
특이한 것은 랜덤 숫자가 추가될 때마다 리스트의 방(데이터가 들어갈 공간)
이 추가되는 것입니다.
배열(array)은 방을 실시간으로 늘리지 못합니다. 방을 늘릴려면 만들어져 있는 배열을 없애고 다시 만들어서 데이터를 넣어야 됩니다.
하지만 리스트는 Add 함수
를 사용해서 실시간으로 방을 늘리고 값을 추가할 수 있습니다.
RemoveAt 함수로 실시간으로 원하는 방을 없앨 수 있다
설명을 위해 스크립트에 코드를 추가 하겠습니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScoreManager : MonoBehaviour { public List<int> scores = new List<int>(); private void Update() { if(Input.GetMouseButtonDown(0)) { int randomNumber = Random.Range(0, 100); scores.Add(randomNumber); } if(Input.GetMouseButtonDown(1)) { scores.RemoveAt(3); } } }
마우스 오른쪽 버튼
을 누르면 3번 방을 없애는 RemoveAt 함수
를 추가 하였습니다.


사진 오른쪽 아래에 Element를 자세히 보면 3번이 없어진 것을 볼 수 있습니다.
리스트의 방이 많이 있는 상태에서 RemoveAt 함수로 특정 방을 없앤다면 뒤에 있는 방들이 앞쪽으로 밀려 들어옵니다. 이것을 여백을 잘라준다고 해서 트림
이라고 부릅니다.
중요한 것은 방을 없앤다고 해서 그 방안에 들어있던 데이터가 없어지진 않습니다.

RemoveAt 함수만 있는 것이 아니라 여러 함수도 있습니다. 상황에 맞게 사용하면 됩니다.
그 외 유용한 방법
간단하게 리스트 삭제하기
리스트의 특징 상 어떠한 방을 없애면 뒤에있는 방이 밀려들어옵니다. 그러므로 방이 남지 않을 때까지 삭제하면 전부 삭제됩니다.
public List<데이터타입> list = new List<데이터타입>(); // Count 함수는 리스트 방의 갯수를 알려준다 while(list.Count > 0) { list.RemoveAt(0); }
배열은 length 로 방의 갯수를 알아내지만 리스트는 Count 로 방의 갯수를 알아낼 수 있습니다. Count 함수를 이용하여 0보다 클때 0번 방을 없애는 반복문을 실행시키면 리스트를 간편하게 없앨 수 있습니다.