private void Awake()
{
if (_GameManager == null)
_GameManager = this;
else if (_GameManager != this)
Destroy(gameObject);
DontDestroyOnLoad(gameObject);
boardScript = GetComponent<BoardManager>();
enemies = new List<Enemy>();
InitGame();
}
private void Start()
{
SceneManager.sceneLoaded += OnSceneLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode leve)
{
level++;
InitGame();
}
private void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
Destroy(gameObject);
}
void InitGame()
{
levelImage = GameObject.Find("LevelImage");
levelText = GameObject.Find("LevelText").GetComponent<Text>();
levelText.text = "Floor " + level;
levelImage.SetActive(true);
Invoke("HideLevelImage", levelStartDelay);
boardScript.SetupScene(level);
}
private void HideLevelImage()
{
levelImage.SetActive(false);
}
void Update()
{
if (GameObject.FindGameObjectWithTag("Enemy") == null)
{
Invoke("Restart", restartLevelDelay);
}
}
private void Restart()
{
SceneManager.LoadScene("PlayScene");
}
굵게 칠한곳이 문제인데 스테이지 생성후에 enemy 태그를 가진 오브젝트를 다 제거하면
Restart를 시행하고 enemy가 다시 생겨서 실행이 안되야 되는데
계속 Restart가 시행됨;;;
if문이 문제인거 같은데 도움좀....
enemy 죽어도 restartlevelDelay 동안 invoke를 계속 실행하니까 그런거 아님?
restartlevelDelay를 2f로 해놨는데 거의 0.1초마다 restart가 시행됨...
if(null == GameObject.FindGameObjectWithTag("Enemy")) { Restart(); }
이렇게 바꾸니까 되네요;;; 왜지;;;;
너 코드대로라면 에너미 죽으면 restart 하기 전까지 프레임마다 계속 invoke(restart , ..) 가 계속 실행되고있음
ㅇㅋㅇㅋㅇ 확인했슴 밤새서 미쳣나봄ㅋㅋㅋㅋㅋ