2017-10-25 14 views
0

여러 GameObject pools을 사용하고 싶으므로 manager 풀이 필요하지만 사용 방법을 이해하지 못하고 어떤 문서도 찾을 수 없습니다.GVR 풀 및 풀 관리자 사용 방법

"enemy"라는 GameObject를 사용하는 새 풀을 어떻게 정의해야합니까?

GameObjectPool에서 새로운 구체적인 클래스를 상속 받아야하나요?

답변

0

풀 관리자에는 Awake에서 설정된 정적 인스턴스가 있습니다. Scene의 GameObject에 ObjectPoolManager 스크립트를 첨부해야합니다.

enter image description here

그럼 당신은 다른 게임 오브젝트에 대한 풀을 만들 수 있습니다

public class GameManager : MonoBehaviour { 

public GameObject enemyPrefab; 
public GameObject itemPrefab; 
public GameObject characterPrefab; 

const int enemyCount = 100; 
const int itemCount = 100; 

private GameObjectPool EnemyPool { 
    get { 
     GameObjectPool pool = ObjectPoolManager.Instance.GetPool<GameObjectPool> (enemyPrefab.name); 
     if (pool == null) { 
      pool = new GameObjectPool(enemyPrefab, enemyCount); 
      ObjectPoolManager.Instance.AddPool(enemyPrefab.name, pool); 
     } 
     return pool; 
    } 
} 

private GameObjectPool ItemPool { 
    get { 
     GameObjectPool pool = ObjectPoolManager.Instance.GetPool<GameObjectPool> (itemPrefab.name); 
     if (pool == null) { 
      pool = new GameObjectPool(itemPrefab, itemCount); 
      ObjectPoolManager.Instance.AddPool(itemPrefab.name, pool); 
     } 
     return pool; 
    } 
} 


// Use this for initialization 
void Start() { 
    StartCoroutine(SpawnEnemy (1f)); 
} 


IEnumerator SpawnEnemy(float t) { 
    for (int i = 0; i < enemyCount; ++i) { 
     GameObject newEnemy = EnemyPool.Borrow(); 
     newEnemy.transform.position = Random.insideUnitSphere; 
     yield return new WaitForSeconds (t); 
    } 
} 


}