Prosto

Unity에서 Active 관련.. Object Pool 관련... 본문

Programing/Unity 3D

Unity에서 Active 관련.. Object Pool 관련...

Prosto 2013. 8. 13. 09:21

유니티 4.2v 기준..

 

현재 Unity에서 Active 제공해주는 함수 중에서 사용 하는 것...

 

일단은 Object의 현재 상태 확은 -> (현재 존재하는지 아닌지.. Active 활성 되있는지...)

gameObject.activeInHierarchy // true의 경우 활성 ...

사용 예..

특정 게임오브젝트 프리팹이 존재한다고 했을 때..

public GameObject bulletObj; //프리팹.

GameObject bullet;

....

bullet = Instantiate(bulletObj, Vector3.zero, Quaternion.identity); //실제 게임 오브젝트 생성.. zero = 0,0,0 position..

//Quaternion.identity = 0,0,0 rotation..

...

if(bulletObj.activeInHierarchy == false)

{

print("regen..");

//이부분에 다른 Active 기능 이용해서 active상태 바꿔줌. SetActive() , SetActiveRecursively() ..
}

 

............

 

무튼.. 이번에 Unity에서 Object Pool(오브젝트 풀) 관련으로 게임 만지면서 사용한 Active 부분은..

gameObject.activeInHierarchy.. 읽기 전용.. 상태 확인을 위해 씀.

gameObject.SetActiveRecursively(bool).. active상태 설정을 위해 씀. true, false...

또는 SetActive() ..

 

처음 게임이 시작 될 때 필요한 수만큼 Object를 GameObject배열로 생성해둠 -> active는 false로..

게임 중 필요한 때, 없앨 필요가 있을 때 gameObject.SetActiveRecursively를 이용해서 상태를 true false 바꿔줌.

대신 Instantiate나 Destroy를 이용하는게 아니기 때문에 Instantiate때 설정해주는 것이 있다면..

active상태를 true로 바꿔 줄 때에 설정해줄 것. 뭐 예를 들면 등장 할 위치 같은 것...

 

....

 

Comments