반응형
728x170
안녕하세요 유니티 비기너입니다.
이번 시간에는 DontDestroyOnLoad를 이용하여 씬을 반복해서
전환하는 경우 활용법 몇 가지에 대해 알아보겠습니다.
First Scene -> Second Scene 이동하는 경우
public class SceenController : MonoBehaviour
{
private void Awake() {
DontDestroyOnLoad(gameObject);
}
}
DontDestroyOnLoad를 이용하여 씬 전환 시에도 오브젝트를 유지하는 코드입니다.
이 부분에선 크게 고려해야 할 부분은 없습니다.
Seconde Scene -> First Scene 이동하는 경우
public class SceenController : MonoBehaviour
{
private void Awake() {
var obj = FindObjectsOfType<SceenController>();
if (obj.Length == 1) {
DontDestroyOnLoad(gameObject);
} else {
Destroy(gameObject);
}
}
}
이전 씬으로 돌아가는 경우 DontDestroyOnLoad를 이용해
유지시킨 오브젝트와 기존에 존재했던 오브젝트가 남아있기 때문에
var type을 이용하여 SceenController들을 배열에 담고, 1개 이상인 경우 파괴시킵니다.
이 코드에 주의할 점은 해당 스크립트가 다른 오브젝트도 추가적으로 할당되어있다면
파괴 시 해당 정보를 잃을 수 있습니다.
public class SceenController : MonoBehaviour
{
public void SceenChange() {
SceneManager.LoadScene("FirstScene");
if(SceneManager.GetActiveScene().name == "SecondScene") {
Destroy(gameObject);
}
}
}
위와 같은 상황을 고려하기 싫으시다면 씬을 전환할 때 파괴시키는 방법도 가능합니다.
DontDestroyOnLoad를 이용하시게 되면 다양한 변수들이 생기기 때문에
오브젝트의 중복처리, 유지 시점, 파괴 시점들을 잘 고려하셨으면 좋겠습니다.
반응형
그리드형
'유니티실습' 카테고리의 다른 글
유니티 Damage Text 만들어보기 (0) | 2020.07.11 |
---|---|
유니티 코루틴을 활용한 Fade In Fade Out (0) | 2020.07.09 |
유니티 카메라 culling Mask사용해보기 (0) | 2020.07.07 |
유니티 이미지 컴포넌트 Filled 활용한 초단위 표현 (1) | 2020.07.02 |
유니티 특정물체 바라보기 2D (0) | 2020.06.29 |