씬 전환 시에도 사라지지 않는 DontDestroy 오브젝트를 만드는 법에 대해 기술하겠다.
이번주에 학습한 전체 내용은 아래 게시글에서 확인이 가능하다.
2025.04.25 - [Study] - [ SJCE 스터디 / 3주차 ] Unity 씬 전환, DontDestroy, 싱글톤
[ SJCE 스터디 / 3주차 ] Unity 씬 전환, DontDestroy, 싱글톤
2024.09.21(토): 원래 3주차는 14일로 예정되어 있었으나, 학교 정전의 이슈로 일주일 미뤄서 진행됐다. 또한, 서버 파트 선배님께서도 일정이 있으셔서 참석하지 못하셔서 유니티 수업으로만 진행
record-coding53.tistory.com
Step 1. DontDestroy 스크립트 생성
- Assets > Scripts 폴더에 dontDestroy.cs 스크립트를 생성한다
- 스크립트에 Awake 함수를 작성하고 DontDestroyOnLoad(this); 구문을 작성한다
- this는 나 자신 즉, 해당 스크립트를 가진 오브젝트를 가리킨다.
using UnityEngine;
public class dontDestroy : MonoBehaviour
{
void Awake()
{
// 이 오브젝트는 씬 전환 시에도 파괴되지 않도록 설정
DontDestroyOnLoad(this.gameObject);
}
}
Step 2. DontDestroyObj 오브젝트 생성
- DontDestroyObj라는 이름의 게임 오브젝트를 생성한다.
Step 3. 오브젝트에 스크립트 연결
- 해당 오브젝트에 DontDestroy 스크립트를 연결한다
- 씬 저장 후 플레이하면 DontDestroyOnLoad와 하위 오브젝트는 사라지지 않는다.
- 하이어라키에서 DontDestroyObj 하위에 임의의 오브젝트를 달아줘서 테스트 해보면 상속구조에 따라 하위 오브젝트도 다 남아있는 걸 확인할 수 있다.
- *빌드에 포함되어야 함 (File>Build Settings>Scenes In Build에서 Add Open Scenes를 눌러서 다른 씬들도 빌드에 추가하고 저장해줘야 한다)
- Unity 2023.1 이후부터는 기존의 Build Settings 창 대신 Build Profiles 창 (cmd+shift+B) 에서 Add Open Scenes
이렇게 하면 아래처럼 SignInScene에서 만든 TestForDontDestroy 오브젝트가 씬 전환 후 Sample Scene에서도 볼 수 있다.
'FE > Unity' 카테고리의 다른 글
[ Unity2D ] 충돌, RigidBody 포지션 변경 (0) | 2025.04.25 |
---|---|
[ Unity2D ] 방치형 게임 - 캐릭터 애니메이션 (0) | 2025.04.25 |
[ Unity2D ] 방치형 게임 - 씬(Scene) 전환 구현 (0) | 2025.04.25 |
[ Unity2D ] 방치형 게임 - Background 설정 (0) | 2025.04.24 |
[ Unity2D ] 시작하기 (0) | 2024.09.02 |