//This script is called by the individual enemies as they are destroyed. public void HandleEnemyDestroyed() { foreach (Transform child in transform) { EnemyRowController row = child.gameObject.GetComponent <EnemyRowController>(); row.remainingEnemies--; } //remainingEnemies.Remove(theEnemyThatWasDestroyed); //Debug.Log("Now there are " + remainingEnemies.Count + " enemies in the list."); //if (remainingEnemies.Count <= 0) //{ // //youWinText.enabled = true; //} }
/// <summary> /// Enemyの生成 /// </summary> private void Create() { //生成したenemyをしまう親オブジェクトを設定 enemyParent = new GameObject("Enemys").transform; rowAliveEnemyNum = rowAliveEnemyNum.Select(i => enemyWidthNum).ToArray(); //全要素にenemyの1行に設置する数を代入する //全ての列のidをListに追加 for (int i = 0; i < enemyWidthNum; i++) { columnEnemyAliveCash.Add(i); } //行ごとにContollerを作成 enemyRows = new EnemyRowController[enemyHeightNum]; for (int i = 0; i < enemyHeightNum; i++) { //行に関するControllerの作成 int lineNumber = i + 1; string rowControllerPrefabName = "Enemy" + lineNumber + "RowController"; GameObject column = new GameObject(rowControllerPrefabName); //行のControllerとなるオブジェクトを生成 EnemyRowController controller = column.AddComponent <EnemyRowController>(); enemyRows[i] = controller; column.transform.parent = transform; //列に対して与える情報を設定 EnemyRowCreateInfo rowInfo = new EnemyRowCreateInfo(); rowInfo.rowId = i; rowInfo.rowInfo = FindEnemyInfo(i); rowInfo.enemyHeightNum = enemyHeightNum; rowInfo.enemyWidthNum = enemyWidthNum; rowInfo.startUpStageId = stageNum - 1; //TODO ステージ数によって変化させる rowInfo.enemyWidthInterval = enemyWidthInterval; rowInfo.stageNum = stageNum; rowInfo.enemyMinPos = new Vector3(minPos.x, minPos.y + enemyBottomPosYDiff, 0); rowInfo.enemyMaxPos = new Vector3(maxPos.x, maxPos.y - enemyTopPosYDiff, 0); controller.Create(rowInfo, enemyParent, onAddScore, (id) => { rowAliveEnemyNum[id]--; if (rowAliveEnemyNum.Sum() == 0) //敵が全員死んだ時 { onDeathAll(); } if (rowAliveEnemyNum[id] == 0) //idの行のEnemyが全滅した時 { // TODO } }); } }