using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterInstantiate : MonoBehaviour
{
ย ย public GameObject monster1;
ย ย WaitForSeconds RespawnTime = new WaitForSeconds(5f);
ย ย bool isDelay = true;
ย ย
ย ย // Start is called before the first frame update
ย ย void Start()
ย ย {
ย ย ย ย Spawn();
ย ย }
ย ย // Update is called once per frame
ย ย void Update()
ย ย {
ย ย ย ย var monsterobjs = FindObjectsOfType<MonsterMoving>();
ย ย ย ย
ย ย ย ย if (monsterobjs.Length == 0)
ย ย ย ย {
ย ย ย ย ย ย StartCoroutine(spawn());
ย ย ย ย ย ย if (isDelay == false)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย Spawn();
ย ย ย ย ย ย ย ย isDelay = true;
ย ย ย ย ย ย }
ย ย ย ย }
ย ย }
ย ย IEnumerator spawn()
ย ย {
ย ย ย ย yield return RespawnTime;
ย ย ย ย isDelay = false;
ย ย }
ย ย void Spawn()
ย ย {
ย ย ย ย Instantiate(monster1, new Vector3(Random.Range(0, 10), -4, 0), Quaternion.identity);
ย ย ย ย Instantiate(monster1, new Vector3(Random.Range(0, 10), -4, 0), Quaternion.identity);
ย ย ย ย Instantiate(monster1, new Vector3(Random.Range(0, 10), -4, 0), Quaternion.identity);
ย ย }
}
์ ํํ๋ ์ฒ์ ๋์จ ๋ชฌ์คํฐ3๋ช
์ฃฝ์ด๋ฉด 5์ด๊ธฐ๋ค๋ฆฌ๊ณ ์์ฑ๋๋๋ฐ
๋๋ฒ์งธ๋ถํฐ ์์ฑ๋ ๋ชฌ์คํฐ3๋ช
์ฃฝ์ด๋ฉด ๋๋ ์ด์์ด ๋ฐ๋ก ์์ฑ๋ผ์ ์์ด๋ฐ๊ฑฐ์ฃ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
๋๋์ด ์ด๋ง ์ดํดํ๋ค์ ใณใณ
Start()์ StartCoroutine(๋ชฌ์คํฐ์ํ)ํ๊ณ
IEnumerator ๋ชฌ์คํฐ์ํ() { while(true) { if (๋ชฌ์คํฐ์ == 0) { yield return RespawnTime; Instantiate(๋ชฌ์คํฐ) 3๋ฒ } } } ์ด๋ฐ์
while (true) { var monsterobjs = FindObjectsOfType(); if (monsterobjs.Length == 0) { yield return RespawnTime; Instantiate(monster1, new Vector3(Random.Range(0, 10), -4, 0), Quaternion.identity); }
start์ ์ฝ๋ฃจํด๋ฃ๊ณ ์ด๋ ๊ฒ ํ๋๋ฐ ์ ๋ํฐ ๋ ๊ฑธ๋ ค์ ๋ฉ์ท๋๋ฐ ์ด๋กํ์ ธ
FIndObjectsOfType()์ ์์ฒญ ์๋ชจ๊ฐ์ด ํฐ ๋ก์ง์ธ๋ฐ ์ด๊ฑธ while๋ก ๋ฌดํ ๋ฃจํ๋ก 0.000001์ด๋ง๋ค ์คํํ๋๊น ๋ ๊ฑธ๋ฆฌ์๋ฐ์ ์์ง ๊ณ ์ณ๋ด!
๋ด๊ฐ ์ง ๊ฒ๋ ํ๋ ธ์ ์ ์์. ๊ทผ๋ฐ ์ํผ ์ ๋ฐ ๋๋์ผ๋ก๋ค๊ฐ ์ง๋ฉด ๋๋ค ์ด๊ฑฐ์ผ
์ ์๊ฐํด๋ณด๋๊น Start์์ While(true) { StartCoroutine(๋ชฌ์คํฐ์ํ) } ์ด๋ ๊ฒ ํด์ผํ ๊ฑฐ ๊ฐ๊ธด ํ๋ค ?
๊ทธ๋ด๊ฑฐ ๊ฐ์ ํจ ํด๋ด
๋ด๊ฐ ์์ ์ ์ง ์ฝ๋ ๋ดค๋๋ฐ ๋๋ค ๋ ๋ฏ ๋์ ์ Start์ while ๋ฌธ ๋๋ฆฌ๋ ค๋ฉด ์ฌ๊ธฐ์ IEnumerator Start()๋ก ํ๊ณ yield return ๋ฃ์ด์ค์ผํจ ๊ทผ๋ฐ ์๋ฌดํผ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์๋ฏ ํด๋ณด์ผ. 'yield return spawnTime ๋ค์ ๋ชฌ์คํฐ ์ํ์ ํ๋ค'๋ ๊ฒ๋ง ์งํค๋ฉด ๋ ๋ฏ
์ํ find ๋ฐ๋ณตํด์ ํฐ์ง๊ฑฐ๊ตฌ๋ ๋์ด ๋งํด๋ณธ๊ฑฐ ๋คํด๋ณด๊ฒ ์ ใณใณ