📁 개발 히스토리

유니티 - 배열 혹은 리스트 마지막 번호 <-> 0번 자동화

일단몸통박치기 2023. 1. 3. 18:02

리스트나 배열을 사용하다 보면 0번 이전의 마지막 인덱스나

마지막 인덱스 이후의 0번 인덱스를 검사해야하는 일이 자주 생긴다.

 

그때 매번 if ( 인덱스가 0보다 작아지면... ) 같은 방어코드를 짜야만

인덱스가 음수로 가거나 null이 뜨지 않는다.

 

이런 일이 자주 발생해서

그냥 자동으로 0보다 작은 값이면 마지막 인덱스로,

마지막 인덱스보다 큰 값이면 0번으로 보내주는 함수를 사용하면 코드가 간단해진다.

 

아래는 실제 사용한 벡터 리스트 버전 함수다.

값이 필요한 부분에 ListItem( List, index )를 넣으면 알아서 넘치거나 음수가 된 인덱스를 계산해서 값을 반환해준다.

Vector3 ListItem (List<Vector3> array, int index)
{
   if (index >= array.Count)
   {
      return array[index % array.Count];
   }
   else if (index < 0)
  {
    return array[index % array.Count + array.Count];
  }
  else
  {
    return array[index];
  }
}

 

배열을 이처럼 쓰고 싶으면 Count 대신에 Length를 넣고

인수는 배열로, 반환값은 배열 내용물로 적당히 바꿔주면 된다.