Posted in: Unity, 메서드 & 팁 정리

(유니티) 리스트 list

목차
리스트 사용 법
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번 방을 없애는 반복문을 실행시키면 리스트를 간편하게 없앨 수 있습니다.

새로운 걸 알아내면 내용 추가하겠음

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다