- Today
- Total
Notice
Recent Posts
Recent Comments
Link
250x250
프로그래밍 농장
리스트 [ Unity ] 본문
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
'Unity' 카테고리의 다른 글
코루틴 [ Unity ] (0) | 2022.07.08 |
---|---|
싱글톤 패턴 / 지연생성 [ Unity ] (0) | 2022.07.07 |
인스턴스 [ Unity ] (0) | 2022.07.07 |
백터 연산 기초 /물체의 이동(좌표,평행)+ 쿼터니언 [ Unity ] (0) | 2022.07.07 |
Unity - VisualStudio 연동에러 (external tools . . ) [ Unity ] (1) | 2022.07.06 |