Unity Script(공통)
Unity Senario Manager(C#스크립트)
뽐타
2022. 9. 16. 13:52
Senario Manager.CS 핵심 코드 (모든 스크립트를 모아 관리해주는 역할)
전체 스크립트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScenarioManager : MonoBehaviour
{
// 시나리오 관리를 위한 변수 선언
private SoundManager SoundM; //SoundManager 연결
public SceneChanger SceneC; //SceneChanger 연결
public UIManager uim; //UIManager 연결
private float play_speed = 1f; //시연 속도 조절
public enum ScenarioSteps //Enum으로 챕터 관리 변수 생성
{
/* 메인화면 */
Chapter_main_start,
/*챕터 1-1 */
Chapter1_start, //챕터1 시작
/*챕터 1-2 */
Chapter1_step2_1_start
}
void Start()
{
DontDestroyOnLoad(this.gameObject); //씬 이동 시 사라지지 않게 하는 기능
}
//코루틴 시작 호출
public void StartScenario()
{
StartCoroutine("Chapter_main_start");
}
// 코루틴 선언
IEnumerator Chapter_main_start()
{
yield return new WaitForSeconds(5.0f * play_speed); //Scene 시작전 대기 5초, 위에서 선언한 play_speed라는 변수로 시연 속도 조절 가능
StartCoroutine("Chapter1_start");
/*
while() //사용자가 임무를 수행할 때까지 반복시키는 코드
{
yield return null;
}
*/
}
}
세부파트 스크립트 설명
public enum ScenarioSteps //Enum으로 챕터 관리 변수 생성
{
/* 메인화면 */
Chapter_main_start,
/*챕터 1-1 */
Chapter1_start, //챕터1 시작
/*챕터 1-2 */
Chapter1_step2_1_start
}
1. Enum으로 각각 시나리오의 변수를 선언해주는 이유는 시나리오가 복잡해질 때, 원인을 바로 체크하기 위함이다. 다수의 코수틴이 생기기 때문에 Debug.Log(Enum.변수)로 추적이 가능하다.
public bool IsPassed = false;
// 코루틴 선언
IEnumerator Chapter_main_start()
{
yield return new WaitForSeconds(5.0f * play_speed); //Scene 시작전 대기 5초, 위에서 선언한 play_speed라는 변수로 시연 속도 조절 가능
// IsPassed = true일 때 넘어간다.
while(!IsPassed) //사용자가 임무를 수행할 때까지 반복시키는 코드
{
yield return null;
}
StartCoroutine("Chapter1_start");
}
IEnumerator Chapter1_start()
{
yield return new WaitForSeconds(5.0f * play_speed); //Scene 시작전 대기 5초, 위에서 선언한 play_speed라는 변수로 시연 속도 조절 가능
StartCoroutine("Chapter1_start");
IsPassed = false; //앞에서 IsPassed를 true로 해줬기때문에 해당 코드를 작성하지 않으면 그냥 넘어간다.
while(!IsPassed) //Ispassed가 true일때까지 반복
{
yield return null;
}
}
2. IsPassed는 다른 스크립트를 참조해서 시나리오가 넘어가도록 도움을 주는 Bool타입 변수이다. While반복문을 한번 거친 IsPassed는 true로 변경해줘야 다음 반복문이 넘겨지지 않고 기능을 수행할 수 있다.