示例#1
0
    public void SpawnEnemy()
    {
        EnemyControl newEnemy   = CheckForAvailableGarbageEnemy();
        UnitStatsUI  newEnemyUI = CheckForAvailableGarbageEnemyUI();

        Transform spawnPoint = FindFurthestSpawnPoint();

        if (newEnemy == null)
        {
            //Instantiate.
            newEnemy = Instantiate(prefabEnemy, spawnPoint.position, spawnPoint.rotation);

            newEnemyUI = Instantiate(prefabEnemyStatUI, Vector3.zero, Quaternion.identity);
            newEnemyUI.transform.SetParent(prefabEnemyStatUI.transform.parent, true);
            newEnemyUI.transform.localScale = Vector3.one;
            RectTransform rtUI = newEnemyUI.transform as RectTransform;

            rtUI.SetAsFirstSibling();
            listGarbageEnemies.Add(newEnemy);
            listGarbageEnemyUIs.Add(newEnemyUI);
        }
        else
        {
            newEnemy.transform.position = spawnPoint.position;
        }

        newEnemy.gameObject.SetActive(true);

        //Pair UI and unit.
        newEnemyUI.tUnit = newEnemy.transform;
        newEnemy.statsUI = newEnemyUI;
        newEnemyUI.gameObject.SetActive(true);

        newEnemy.Init();
    }
示例#2
0
    private UnitStatsUI CheckForAvailableGarbageEnemyUI()
    {
        UnitStatsUI ui = null;

        if (listGarbageEnemyUIs.Count > 0)
        {
            //Check which one is active.
            foreach (UnitStatsUI u in listGarbageEnemyUIs)
            {
                if (!u.isActiveAndEnabled)
                {
                    ui = u;
                }
            }
        }

        return(ui);
    }