프로그래밍 농장

리스트 [ Unity ] 본문

Unity

리스트 [ Unity ]

Tennessee201 2022. 7. 7.
728x90

리스트 ( List )

: 배열의 확장 + 여러가지 GameObject를 한번에 다룰수있다 

ex) 실시간으로 특정 오브젝트에 대한 관리가 가능하다. 


- List의 첫번째 특징 

기존 배열의 경우 아래와 같이 이미 지정해 놓은 array를 초과하면 OutOfRangeException을 반환한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScoreManager : MonoBehaviour
{
    public int[] scores = new int[10];

    private int index = 0;


    private void Start()
    {
        scores = new int[11];
    }
    // Update is called once per frame
    void Update()
    {
        //마우스 왼쪽 버튼을 누를시
        if (Input.GetMouseButtonDown(0))
        {
            //0~100 사이 랜덤값
            scores[index] = Random.Range(0, 100);
            index++;
        }
    }
}

 


반면, list의 경우 기존 배열과 다르게 방에 들어오는 인원에 따라 실시간으로 대응이 가능하다.

using System.Collections.Generic;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScoreManager : MonoBehaviour
{
    public List<int> scores = new List<int>();


    // Update is called once per frame
    void Update()
    {
        //마우스 왼쪽 버튼을 누를시
        if (Input.GetMouseButtonDown(0))
        {
            int randomNumber = Random.Range(0, 100);
            scores.Add(randomNumber);

            
        }
    }
}

- List의 두번째 특징 

첫번째 특징과 비슷하다. 기존 배열의 경우 임의로 방의 갯수를 지정해주었기 때문에, 데이터값이 할당되지 않았다 하더라도, 방은 그대로 존재하게 되지만 리스트의 경우 유동적으로 생성 및 삭제 된다.

if (Input.GetMouseButtonDown(1))
        {
            scores.RemoveAt(3);
        }

-> 기존 배열의 경우 데이터값이 할당되지 않았어도, 이미 선언했기 때문에, null 등이 쓰레기값이 들어가있다. 

만약 list 2번째를 날리면 오브젝트가 아닌 방이 통째로 날라간다 -> 그 후 뒤쪽의 값(+) 이 앞으로 밀린다 : (=트림 : 여백을 잘라줌)

 

대부분 List는 배열의 상위호환 또는 대체의 느낌으로 쓰이지만 일반적으로 Object의 총 갯수 ( ex. 실시간으로 생성되는 Object . . )  를 확인할수 없을 때 사용한다. 

728x90