public enum PoolType
    {
        Enemy,
        Item,
        Bullet
    }

public GameObject GetObject(PoolType key)
    {
        if (PoolDictionary.ContainsKey(key) && PoolDictionary[key].Count > 0)
        {
            GameObject obj = PoolDictionary[key].Dequeue();
            obj.SetActive(true);
            return obj;
        }

        return null;
    }

 

GetObject 메서드를 사용한다고 가정하자.

 

여기서 매개변수는 Pooltype(Enum)이다.

 

[SerializeField] private List<GameObject> enemies;

GameObject enemy = ObjectManager.Instance.GetObject(enemies[randomEnemy]);

 

그러나 여기서 GetObject를 불러와서 enemies[randomEnemy]를

 

매개변수 값에 넣는다면 오류가 발생한다.

 

타입이 다르기 때문이다.

 

enemies[randomEnemy]는 List<GameObject> 타입이고

 

ObjectManager.GetObject(PoolType)는 Enum 타입이기 때문에 직접 연결이 안 된다.

 

해결한 방법

[Header("Enemy Settings")]
    [SerializeField] private List<GameObject> enemies;
    [SerializeField] private List<ObjectManager.PoolType> enemiesTypes;

 

ObjectManager.PoolType의 리스트를 만들어 선언후 

 

ObjectManager.PoolType selectEnemiesType = enemiesTypes[randomEnemy];
GameObject enemy = ObjectManager.Instance.GetObject(selectEnemiesType);

 

리스트의 값을 selectEnemiesType 변수에 저장하여 맞춰준다.

 

 

단, 이 경우 동일한 인덱스로 접근하고 있기 때문에 

 

enemies 리스트와 enemyTypes 리스트의 순서를 일치시켜야 한다.

(Index는 하나인데, 리스트를 동시에 참조한다면)

+ Recent posts