示例#1
0
    public IEnumerator StartSpawn(int level)
    {
        PrefabLevel prefabLevel = m_prefabData.GetPrefabData(level);

        while (true)
        {
            yield return(new WaitForSeconds(m_waitTime));

            CheckCurrentLevelPrefab(prefabLevel);

            if (m_spawnCounter < m_maxSize)
            {
                GameObject spawnObj = Instantiate(m_prefab, m_transform.position, m_transform.rotation);
                spawnObj.GetComponent <ISpawnObject>().OnSpawnObjcet(this);

                if (m_spawnTag != "")
                {
                    spawnObj.tag = m_spawnTag;
                }
                OnSpawnEvent.Invoke(spawnObj.transform);

                m_spawnCounter++;
            }
        }
    }
示例#2
0
    private void CheckCurrentLevelPrefab(PrefabLevel prefabLevel)
    {
        if (0 >= prefabLevel.prefab.Length)
        {
            Debug.Log("沒有設定關卡預製物件");
            return;
        }

        if (m_index < prefabLevel.prefab.Length)
        {
            float nextReadltime = prefabLevel.prefab[m_index].realtimeStartup;
            if (nextReadltime < Time.realtimeSinceStartup)
            {
                ObjectSetting setting = prefabLevel.prefab[m_index];
                setting       = prefabLevel.prefab[m_index];
                nextReadltime = setting.realtimeStartup;
                m_prefab      = setting.prefab;
                m_waitTime    = setting.waitTime;
                m_index++;
            }
        }
    }