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++; } } }
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++; } } }