Game Development, 게임개발/개발

[Unity] 게임오브젝트 배열로 받기 (clone 생성시)

게임이 더 좋아 2020. 2. 29. 23:02
반응형
728x170

 

GameObject 의 자료형을 가진 배열을 반환한다는 뜻이다.

 

우선 배열을 왜쓰냐..? GameObject에서 clone을 만들 때... clone을 다루려면 어떻게 해야할까 생각중에

clone을 배열에 넣어놓으면 빼서 쓰면 되겠구나라는 생각으로 배열로 만들기로 했다.

 

 

 

 

GameObject 의 배열 선언은 저렇게 

 

public GameObject[] bottle;

어디서 본 것 같은 배열선언법??? ㅋㅋㅋㅋㅋ

 

 

그렇다면 배열을 만들었으면 이제 원소를 넣어야지?

GameObject의 타입이니까 GameObject만 들어가겠지?

 

 

그렇다면 어떠한 GameObject가 들어가야할까?

 

 

 

Tag중에서 "ㅁㅁㅁ"인 것만 원소로 들어갔으면 좋겠다. 라고 생각 

 

그래서

 

bottle = GameObject.FindGameObjectsWithTag("ㅁㅁㅁ"); 

라고 쓴 것이다.

 

 

 

그렇다면 배열이니까 꺼내쓰려면 조사를 해야겠지??? if문으로 조건을 어떻게 하든지 

 

내가 쓴 것은 

 public int countBottle()
    {
        bottle = GameObject.FindGameObjectsWithTag("unActBottle");
        bottlenumber = 0; 
        for (int i = 0; i < bottle.Length; i++)
        {
            if (bottle[i].GetComponent().isStanding)
            {
                
                bottlenumber++;

            }
        }
        return bottlenumber;
    }

 

다시말해서 모든 bottle오브젝트를 조사할 것이고 

만약 그 오브젝트중에서 isStanding이 true값을 가지는 것이 있다면 

bottlenumber가 1씩 늘을것이고 그 값을 반환한다.

 

이 함수는 매 프레임 생성될 것이기 때문에 

isStanding의 값이 변하는 오브젝트가 있을 경우 bottlenumber가 바뀌고

bottlenumber는 현 상태에서 isStanding의 참값을 가진 오브젝트의 개수를 나타낼 것이다.

 

라는 것이라는 것이다.

 

결국 현재 씬의 오브젝트 상태를 반영하기 위한 함수다. 

 


참고링크 

 

https://docs.unity3d.com/ScriptReference/GameObject.FindGameObjectsWithTag.html

 

728x90
반응형
그리드형