dnrkckzk 초보 유니티 개발자 개발하면서 겪는 어려움들을 해결했을 때, 인터넷 돌아다니는 흥미 있는 글 있을 때, 저장하고 공유하기 위한 공간.

카테고리

전체보기 (42)
뇌를 자극하는 C# 5.0프로그래밍 (9)
Unity Tip (30)
C# (1)
Total
Today
Yesterday

 오랜만에 글을 쓰게 됐습니다. 요번에 작업하면서 애먹었던 것을 기록하는 의미에서 이렇게 포스팅을 하게 됐습니다. 요번에 쓸 내용은 Additive모드로 씬을 불러오는 것과 또 불러왔을 때 주의할 점에 대해서인데요. 여러 주의할 점이 있겠지만, 제가 겪었던 문제만을 쓰도록 하겠습니다. 다른 문제들은 겪어보지 않아서 잘 모르니까요. 

 Additive모드로 씬을 불러오면 현재 씬을 그대로 둔 채로 지정한 씬을 불러오게 됩니다. 활용하게 되면 앵그리버드 같은 게임에서 발사대는 고정으로 놓고 표적과 장애물들만 씬을 바꿔가면서 불러오게 하는거죠. 발사대가 있는 씬은 그대로 둔 채로 말이죠. 먼저 씬을 불러오는 방법입니다.  

1
2
3
4
5
6
7
8
9
10
11
12
13
using UnityEngine;
using UnityEngine.SceneManagement;
public class Test : MonoBehaviour {
    void Start ()
    {
        LoadSceneAdditive();    
    }
    void LoadSceneAdditive()
    {
        SceneManager.LoadScene("Scene2", LoadSceneMode.Additive);
    }
}
 
cs


 이렇게 코드를 짜고 빈 오브젝트에 넣은 뒤 실행시키면,

 씬 2개가 동시에 켜지는 것을 확인할 수 있습니다. 이런 식으로 여러 씬을 동시에 활용할 수 있도록 additive형식으로 씬을 불러올 수 있는데요. 이제 주의할 점에 대해서 서술하겠습니다.


1. AudioListener중복.

 콘솔창에서 바로 알 수 있겠지만, 오디오 리스너가 여러개 있다고 로그가 바로 뜹니다. 주로 오디오 리스너가 달려있을 카메라에 가서 제거해주시면 됩니다.


2.카메라.

 메인 카메라를 기준으로 어떤 작업을 하도록 코드를 짰는데, 두 씬의 카메라 위치나 속성이 다를 경우, 원하는 대로 동작하지 않을 가능성이 매우 높습니다. 그래서 한 쪽 씬의 카메라를 끄거나, 코드로 어떤 카메라를 통해서 작동시킬 것인지 지정을 해줘야 합니다. 


3.Active Scene설정

 Additive모드로 씬을 불러오게 되면 원래 있던 씬이 Active Scene이 됩니다. (정확히는 Active Scene이던 게 계속 가는 거겠죠.) 이런 상황에서 Instatiate라든가 어떤 동적인 생성을 하게 되면 오브젝트들은 Active씬에 귀속되게 됩니다. 그래서 불려온 Scene이 되돌아가도 사라지지 않고 부른 씬에 남아있게 됩니다. 그런 상황을 방지하기 위해서는 Active Scene을 코드로 수정을 해줘야 합니다. 설정 방법은 간단합니다.

1
SceneManager.SetActiveScene(SceneManager.GetSceneByName("Scene2"))
cs

 이렇게 설정해주면 Active Scene을 불러온 씬으로 설정해주고 생성된 오브젝트들도 불려온 Scene에 귀속되게 됩니다.


 일단 하다가 막혔던 것 중에 기억나는 내용은 다 적었습니다. 혹시나 빠뜨렸던게 생각나면 추가 수정하도록 하겠습니다. 감사합니다.






Posted by dnrkckzk
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함