반응형
GameObject 배열을 섞어서 렌더링해줘야 할 일이 생겼다. Java를 주로 해왔기에 대충 잘 짜여진 함수들만 찾아봤고, Arrays.shuffle같이 편리하게 만들어진 함수가 있을 줄 알았는데, 저렇게 바로 되진 않았고, 일단 array를 List로 바꾸는 것부터 시작하였다.
// GameObject타입의 objArr라는 배열이 있다고 가정하자. List<GameObject> objs = new List<GameObject>(objArr);
기본적으로 생성자에 Array를 넣어줬는데 바로 List로 변한다는 점은 Java와 비슷하게 편리하다.
이제 List로 만들었으니, 섞어야하는데.. Random함수를 사용하면 왠지 해당 범위내에서 Random값만 출력해줄 것 같고, Unique처리는 안될줄 알았는데, 신기하게도 UnityEngine에서 제공하는 Random 클래스는 Unique 처리까지 지원을 해주었다. (다만, 컬렉션 크기가 클 경우 메모리 사용량이 많을듯..)
GameObject o = Random.Range(0, objs.Count);
위와 같은 간단한 코드만으로, objs 리스트에 있는 엘리먼트 하나를 반환해주고, 반복문등을 통해 처리해도 해당 함수 내에서는 항상 유니크한 엘리먼트를 반환해주므로 매우 편리하다.
반응형
'개발 > Unity' 카테고리의 다른 글
[Unity5] Start vs Awake (0) | 2017.10.30 |
---|---|
[Unity 5] Resources.LoadAll를 이용한 Sprite 가져오기 (0) | 2017.10.23 |
[Unity 5] Resources Path (0) | 2017.10.23 |