'foreach'에 해당되는 글 1건

  1. 2018.03.27 [유니티] 애니메이션 클립 구하는 방법!

애니메이션 클립은 애니메이션에서 가장 작은 단위로써, 걷기 / 뛰기/ 숨쉬기 등 동작 하나하나를 나타내는 단위이다.


이것은 Animation을 분할해놓았을 경우 Animation 컴포넌트를 추가하게 되면 기본적으로 목록이 있다.


Animations라는 속성이 있고, 그것을 눌러보면 배열로 이루어진것을 볼 수 있다(기본은 size 0)


이 Animation에 Animations 배열 항목을 빼보는 방법은 다음과 같다.


public GameObject character;
Animation anim = character.GetComponent<Animation>();
        
foreach (AnimationState state in anim)
{
Debug.Log(state.name);
}



이렇게 하면,  anim안에 AnimationState 형의 값을 모두 가져와 Debug.Log에 이름을 출력한다.


만약, 이 이름을 전부 저장해서 사용하고 싶다면, string 배열에 저장을 해야할 것이다.


왜냐하면, 애니메이션을 실행하는 문장은 


        anim.Play("Death");


와 같이 Play 함수 뒤에 string 형을 매개변수로 적어야 하기 때문이다.


foreach()문을 어떻게 for문으로 변경해야 하는지 많이 검색을 해봤고, 시도를 해봤다.


그렇지만 실패했고, foreach문에서 어떻게 반복되는 횟수 즉, index 값을 찾을까를 알아봤다.


그 결과, index를 외부에 변수로 선언하고, foreach()문 앞에 index++;으로 증가를 시키면 되는 간단한 것이었다.


따라서, string 배열 안에 애니메이션 클립의 이름을 넣는 코드는 다음과 같다.


        internal int index;        
foreach (AnimationState state in anim)
{
            animArray[index] = state.name;
Debug.Log(state.name);
            index++;
}


이렇게 하면 , foreach()에서 몇 번 째 요소인지 for문에서 i값으로 사용할 수 있다.



Posted by sungho88
,