private void Awake() { if (awake) { return; } else if (instance == null) { awake = true; instance = this; DontDestroyOnLoad(this); if (Prefabs != null) { foreach (var prefab in Prefabs) { SpawningPool.AddPrefab(prefab.Key, prefab.Prefab); } } UnityEngine.SceneManagement.SceneManager.sceneLoaded += SceneWasLoaded; } else { Object.Destroy(gameObject); } }
protected override void Init() { base.Init(); SceneType = Define.Scene.Play; Managers.UI.ShowSceneUI <UI_Play>(); // Dictionary<int, Data.Stat> dict = Managers.Data.StatDict; // Transform rootTransform = Managers.UI.Root.transform; // GameObject goJoyStick = Managers.Resource.Instantiate("UI/JoyStick/UI_JoyStick"); // GameObject goCommand = Managers.Resource.Instantiate("UI/Button/UI_Command"); // goJoyStick.transform.SetParent(rootTransform); // goCommand.transform.SetParent(rootTransform); // rootTransform.SetParent(transform); GameObject player = Managers.Game.Spawn(Define.WorldObject.Player, "Player/donggun"); //캐릭터 객체의 프리펩 이름을 가져온다. // player.GetOrAddComponent<TestController>().SetCharater(charater); // charater.transform.SetParent(player.transform); Debug.Log(player.transform.name); Camera.main.gameObject.GetOrAddComponent <CameraController>().SetPlayer(player); //Managers.Game.Spawn(Define.WroldObject.Monster, "Knight"); GameObject goSpawningPool = new GameObject { name = "SpawningPool" }; SpawningPool pool = goSpawningPool.GetOrAddComponent <SpawningPool>(); // pool.SetKeepMonsterCount(1); }
public static void ReturnToCacheOrDeactive(GameObject gO) { if (!SpawningPool.ReturnToCache(gO)) { gO.SetActive(false); } }
private IEnumerator Spawning() { while (true) { if (Time.time > spawnTime) { spawnTime = Time.time + Random.Range(minTimeSpawn, maxTimeSpawn); GameObject go; //Get random upgrade from pool if upgrades amount more than one if (upgrades.Length > 1) { string upgrade = upgrades[Random.Range(0, upgrades.Length)].name; go = SpawningPool.CreateFromCache(upgrade); } else { go = SpawningPool.CreateFromCache(upgrades[0].name); } //Set position upgradeSpawnPos.x = Random.Range(-bound.x, bound.x); go.transform.position = upgradeSpawnPos; //Add to array var upgradeComponent = go.GetComponent <UpgradeBase>(); activeUpgrades.Add(upgradeComponent); } yield return(null); } }
protected override void Init() { base.Init(); SceneType = Define.Scene.Game; //인게임 씬에서는 UI 팝업창이 열려~ Managers.UI.ShowSceneUI <UI_Inven>(); //임시로 //for (int i = 0; i < 5; i++){ // Managers.Resource.Instantiate("UnityChan"); //} //co = StartCoroutine("CoExplodeAfterSeconds", 4.0f); //StartCoroutine("CoStopExplode", 3.0f); //임시로 Dictionary <int, Data.Stat> dict = Managers.Data.StatDict; gameObject.GetOrAddComponent <CursorController>(); GameObject player = Managers.Game.Spawn(Define.WorldObject.Player, "UnityChan"); Camera.main.gameObject.GetOrAddComponent <CameraController>().SetPlayer(player); //Managers.Game.Spawn(Define.WorldObject.Monster, "Knight"); GameObject go = new GameObject { name = "SpawningPool" }; SpawningPool pool = go.GetOrAddComponent <SpawningPool>(); pool.SetKeepMonsterCount(5); }
private IEnumerator SendEnemytWave() { RestPlaceController restPlaceCon; GameObject enemyGo; EnemyController enemy; PatternRoute pattern; Enemy enemyInfo; int range; while (true) //TODO Canviar per comprovació de Game Over { range = Random.Range(level.minEnemiesPerWave, level.maxEnemiesPerWave); for (var i = 0; i < range; i++) { if (CheckRestPlacesEnemy(out restPlaceCon)) { enemyGo = SpawningPool.CreateFromCache("EO1"); enemy = enemyGo.GetComponent <EnemyController> (); pattern = restPlaceCon.enemyComming(enemy); enemyInfo = new Enemy( GetNextEnemyIdString(), level.enemyHealth, level.enemySpeed, pattern, restPlaceCon, 1 ); enemy.Init(enemyInfo); } Debug.Log(restPlaceCon); } yield return(new WaitForSeconds(level.timeBetweenEnemyWaves)); } }
public static void AddPrefabCheck(string key, GameObject gO) { if (!SpawningPool.ContainsPrefab(key)) { SpawningPool.AddPrefab(key, gO); } }
private void SceneWasLoaded(UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode mode) { if (ReturnToCacheOnLevelLoad) { SpawningPool.RecycleActiveObjects(); } }
// Start is called before the first frame update protected override void Init() { base.Init(); SceneType = Define.Scene.Game; //인벤토리 열기 //Managers.UI.ShowSceneUI<UI_Inven>(); gameObject.GetOrAddComponent <CursorController>(); GameObject player = Managers.Game.Spawn(Define.WorldObject.Player, "UnityChan"); Camera.main.gameObject.GetOrAddComponent <CameraController>().SetPlayer(player); Managers.Game.Spawn(Define.WorldObject.Monster, "Knight"); Managers.Sound.Play("Sounds/GameSound/AboveTheTreetops", Define.Sound.Bgm, 0.45f); GameObject go = new GameObject { name = "SpawningPool" }; SpawningPool pool = go.GetOrAddComponent <SpawningPool>(); //임시 for (int i = 0; i < 30; i++) { Managers.Inven.Add(1000, Define.InvenType.Consume); Managers.Inven.Add(1002, Define.InvenType.Consume); } pool.SetKeepMonsterCount(5); }
private void ProjectileSpawn() { for (int i = 0; i < barrels.Length; i++) { GameObject go = SpawningPool.CreateFromCache(bulletPrefab.name); go.transform.position = barrels[i].position; go.transform.rotation = Quaternion.identity; } nextFireTime = Time.time + fireDelay; }
public void RestartGame() { StageManager.Instance.ResetData(); UpgradeSpawnManager.Instance.ResetData(); UIScore.Instance.ResetData(); PlayerController.Instance.Spawn(); SpawningPool.RecycleActiveObjects(); StageManager.Instance.LoadStage(); }
// Start is called before the first frame update void Start() { int count = 3; for (int i = 0; i <= count; i++) { GameObject t_waveMonster = ReferenceManager.instance.GetData(UnityEngine.Random.Range(0, count)); FunctionHelper.AddPrefabCheck(t_waveMonster.name, t_waveMonster); GameObject t_go = SpawningPool.CreateFromCache(t_waveMonster.name); } }
internal static void NextLevel() { actualLevelIndex++; if (actualLevelIndex < levels.Count) { actualLevel = levels[actualLevelIndex]; SpawningPool.Clear(true); SceneManager.LoadScene("LevelScene", LoadSceneMode.Single); } else if (actualLevelIndex >= levels.Count) { SpawningPool.Clear(true); SceneManager.LoadScene("StartScene", LoadSceneMode.Single); } }
void OnCollisionEnter2D(Collision2D coll) { if (IsDropped && coll.transform.tag == "Player") { if (_Inventory.FindSimilar(_Block) != null) { _Inventory.AddItem(_Inventory.FindSimilar(_Block), _Block, 1, true); } else { _Inventory.AddItem(_Inventory.FindEmptyCell(), _Block, 1, false); } SpawningPool.ReturnToCache(gameObject, gameObject.transform.name); gameObject.SetActive(false); } }
protected override void Init() { base.Init(); SceneType = Define.Scene.Game; Dictionary <int, Data.Stat> dict = Managers.Data.StatDict; gameObject.GetOrAddComponent <CursorController>(); GameObject player = Managers.Game.Spawn(Define.WorldObject.Player, "UnityChan"); Camera.main.gameObject.GetOrAddComponent <CameraController>().SetPlayer(player); GameObject go = new GameObject { name = "SpawningPool" }; SpawningPool pool = go.GetOrAddComponent <SpawningPool>(); pool.SetKeepMonsterCount(5); }
protected override void Init() { base.Init(); SceneType = Define.Scene.Game; //Managers.UI.ShowSceneUI<UI_Inven>(); gameObject.GetOrAddComponent <CursorController>(); GameObject player = Managers.Game.Spawn(Define.WorldObject.Player, "UnityChan"); Camera.main.gameObject.GetOrAddComponent <CameraController>().SetPlayer(player); //Managers.Game.Spawn(Define.WorldObject.Monster, "Knight"); GameObject go = new GameObject { name = "SpawningPool" }; SpawningPool pool = go.GetOrAddComponent <SpawningPool>(); pool.SetKeepMonsterCount(5); }
IEnumerator SpawnWithDelay(int amount, float delay) { while (ships.Count < enemyCount) { if (Time.time >= lastSpawnTime) { lastSpawnTime = Time.time + spawnEnemyDelay; GameObject go = SpawningPool.CreateFromCache(enemyPrefab.name); go.transform.position = spawnPosition; //For safe object spawn EnemyShip ship = go.GetComponent <EnemyShip>(); ship.OnDeactivate += RecountActiveShips; ship.SetPath(path); ships.Add(ship); currentActiveShipCount++; spawnedShipsCount++; } yield return(null); } }
private IEnumerator SendTouristWave() { RestPlaceController restPlaceCon; GameObject turistaGo; PatternRoute pattern; TouristController tourist; Tourist touristInfo; int range; string touristId; while (true) { range = Random.Range(level.minTouristsPerWave, level.maxTouristsPerWave); for (var i = 0; i < range; i++) { if (CheckRestPlaces(out restPlaceCon)) { yield return(new WaitForSeconds(level.touristSpanSpeed)); turistaGo = SpawningPool.CreateFromCache("TO1"); touristId = GetNextTouristIdString(); tourist = turistaGo.GetComponent <TouristController> (); pattern = restPlaceCon.touristComming(tourist); touristInfo = new Tourist( TourisType.Girl, touristId, level.touristSpeed, pattern, restPlaceCon, 2 ); tourist.Init(touristInfo); } } yield return(new WaitForSeconds(level.timeBetweenWaves)); } }
public string[] fancySolveProblem() { // Implement a genetic algorithm // set global data for Genetic Solution Citizens GSCitizen.setCities(Cities); GSCitizen.setRandom(rnd); int solutionsCount = 0; int generationCount = 1; int attempts = 0; // start time Stopwatch timer = new Stopwatch(); timer.Start(); // Best Citizen So Far GSCitizen bcsf = getRandomSolution(); solutionsCount++; String bestTime = timer.Elapsed.ToString(); // set global data for Genetic Solution int populationSize = 2000; // Cities.Length * 15; int groupSize = 5; int numNearbyCities = Cities.Length; int bestSoFarGen = 0; cityMap = new CityMap(Cities, numNearbyCities); GSCitizen.cityMap = cityMap; List <GSCitizen> population = new List <GSCitizen>(); // find initial greedy solutions for (int i = 0; i < populationSize; i++) { GSCitizen citizen = getGreedySolution(i % Cities.Length); if (bcsf.fitness() > citizen.fitness()) { bcsf = citizen; bestTime = timer.Elapsed.ToString(); solutionsCount++; } population.Add(citizen); } // Start breeding //while(generationCount < 200) while (attempts < populationSize * 10) { // produce the next generation List <GSCitizen> nextGeneration = new List <GSCitizen>(); // shuffle the population Shuffle <GSCitizen>(population); // take groups of groupSize, breed the fitest two and replace the least fit group members with surviving children while (population.Count > 0) { SpawningPool pool = new SpawningPool(); for (int i = 0; i < groupSize; i++) { if (population[0] != null) { pool.Add(population[0]); population.RemoveAt(0); } } GSCitizen[] survivors = pool.spawn(); for (int i = 0; i < survivors.Length; i++) { nextGeneration.Add(survivors[i]); attempts++; // if any survivers are more fit than the best citizen so far, make it the new best citizen so far if (survivors[i].fitness() < bcsf.fitness()) { bcsf = survivors[i]; bestTime = timer.Elapsed.ToString(); solutionsCount++; attempts = 0; } } } population = nextGeneration; generationCount++; //Console.WriteLine("Finished a generation"); } //bssf = getGreedySolution(0).getSolution(); bssf = bcsf.getSolution(); double[] genValues = new double[populationSize]; for (int i = 0; i < populationSize; i++) { genValues[i] = population[i].fitness(); } // bestTime = timer.Elapsed.ToString(); Console.WriteLine("Run time: " + timer.Elapsed.ToString()); string[] results = new string[3]; results[COST] = costOfBssf().ToString(); // load results into array here, replacing these dummy values results[TIME] = timer.Elapsed.ToString(); results[COUNT] = solutionsCount + ""; return(results); }
public void Deactivate() { OnDeactivate(this, EventArgs.Empty); SpawningPool.ReturnToCache(gameObject); }
private void Destroy() { SpawningPool.ReturnToCache(gameObject); }
public virtual void Destroy() { StopCoroutine(WaitBeforeDestroy()); SpawningPool.ReturnToCache(gameObject); }