Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C#
- 애드몹
- unity
- 랜덤
- 광고테스트
- 코딩테스트
- 애니메이션
- UGUI
- canvasgroup
- 프로그래머스
- React Native
- csvhelper
- 컴퓨터구조
- climbingtheleaderboard
- 열거형
- 게임개발
- Hackerrank
- enum
- unity3D
- 유니티기초
- dotween
- scrollrect
- cs
- 모션
- LINQ
- Admob
- 유니티
- ui
- http
- 전면광고
Archives
- Today
- Total
Ruya Games
Scene 이동시 이전 씬의 정보 저장 본문
이전 씬의 정보를 저장하는 방법은 크게 2가지가 있는데요.
1. Static Class에 저장
사실 이전 씬의 정보를 저장한다기보단 메모리에 저장되있기때문에 Scene을 변경해도 클래스가 사라지지 않습니다.
다만 MonoBehaviour를 상속받을 수 없고, 씬 안의 오브젝트를 제어할 수 없기 때문에 어느정도 제약이 있습니다.
public static class StaticClass {
public const float StaticValue = 1.0f;
public string StaticString;
}
2. DontDestroyOnLoad() 사용
DontDestroyOnLoad()는 본인 클래스와 본인 클래스가 컴포넌트로 추가된 게임 오브젝트를 씬 전환시에도 사라지지 않도록 합니다.
public class DontDestroyClass : MonoBehaviour {
void Awake() {
DontDestroyOnLoad(this.gameObject)
}
}
이렇게 입력해두면 해당 스크립트가 추가된 컴포넌트는 씬이 전환되어도 사라지지 않습니다.
다만 해당 오브젝트가 있던 씬에 다시 진입하게 되면 같은 오브젝트가 2개가 되는 문제가 발생합니다(또 다시 들어오면 3개, 4개...).
따라서 DontDestroyOnLoad를 사용할때는 다시는 들어오지 않을 씬에 해당 오브젝트를 추가해두거나, Singleton패턴으로 오브젝트의 중복 생성을 제어해야합니다.
public class DontDestroyClass : MonoBehaviour {
public static DontDestroyClass instance = null;
void Awake() {
// DontDestroyClass 인스턴스가 이미 있는지 확인하고, 없다면 현재 인스턴스를 할당합니다.
if (instance == null) instance = this;
// 인스턴스가 이미 있는 경우 오브젝트를 제거합니다.
else if (instance != this) Destroy(gameObject);
DontDestroyOnLoad(gameObject);
}
}
'Unity' 카테고리의 다른 글
유니티 실행환경 프레임 고정시키기 + 에디터에서 프레임 확인하기 (3) | 2023.12.03 |
---|---|
Audiosource 출력 소리의 스펙트럼(파형) 시각화하기 (0) | 2023.12.01 |
Unity 인스펙터(inspector) 정리하기 (0) | 2023.12.01 |
Scene 변경시 이벤트 호출 (0) | 2023.11.30 |
Unity에서 사용 가능한 C# BezierCurves 일반화 함수 (0) | 2023.11.30 |