출처: 골드 메탈 님의 유튜브 콘텐츠 클론 코딩
기존에는 랜덤한 위치에 적이 스폰되도록 하였다. 이를 제작자가 원하는 위치에 적이 생성될 수 있도록 한다.
구조체를 하나 만들어서 활용한다. 구조체를 타입으로 하는 리스트를 만들어 생성 위치와 시점 그리고 적의 타입을 관리한다.

스폰 시점, 타입, 스폰 위치를 ,를 기준으로 구분한다.
프로젝트 내에 Resources 폴더를 생성하여 텍스트 파일을 저장한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | void ReadSpawnFile() { spawnList.Clear(); spawnIndex = 0; spawnEnd = false; TextAsset textFile = Resources.Load("Stage 0") as TextAsset; StringReader stringReader = new StringReader(textFile.text); while(stringReader != null) { string line = stringReader.ReadLine(); if (line == null) break; Debug.Log(line); Spawn spawnData = new Spawn(); spawnData.delay = float.Parse(line.Split(',')[0]); spawnData.type = line.Split(',')[1]; spawnData.point = int.Parse(line.Split(',')[2]); spawnList.Add(spawnData); } stringReader.Close(); nextSpawnDelay = spawnList[0].delay; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | void SpawnEnemy() { int enemyIndex = 0; switch (spawnList[spawnIndex].type) { case "S": enemyIndex = 0; break; case "M": enemyIndex = 1; break; case "L": enemyIndex = 2; break; } int enemyPoint = spawnList[spawnIndex].point; GameObject enemy = objectManager.MakeObj(enemyObjs[enemyIndex]); enemy.transform.position = spawnPoints[enemyPoint].position; Rigidbody2D rigid = enemy.GetComponent<Rigidbody2D>(); Enemy enemyLogic = enemy.GetComponent<Enemy>(); enemyLogic.player = player; enemyLogic.gameManager = this; enemyLogic.objectManager = objectManager; if (enemyPoint == 5 || enemyPoint == 6) { enemy.transform.Rotate(Vector3.forward * 45); rigid.velocity = new Vector2(enemyLogic.speed, -1); } else if(enemyPoint == 7 || enemyPoint == 8) { enemy.transform.Rotate(Vector3.back * 45); rigid.velocity = new Vector2(enemyLogic.speed * (-1), -1); } else { rigid.velocity = new Vector2(0, enemyLogic.speed * (-1)); } spawnIndex++; if(spawnIndex == spawnList.Count) { spawnEnd = true; return; } nextSpawnDelay = spawnList[spawnIndex].delay; } | cs |
