멀티 장면을 이용한 개발에서 Instantiate라고 하면 예상치 못한 장면이 나옵니다.
4229 단어 Unity
멀티플렉스 개발 사용
유니티 5과가 언제부터인지는 여러 장면이라고 할 수 있다.
현재 프로젝트에서 처음으로 다중 장면을 사용합니다.
그때 빠졌던 올가미를 소개해 줬으면 좋겠어요.
Instantiate라고 부르면 어떤 장면에 배치될까?
유닛 쓰시는 분들 다 좋아하시더라고요.Instantiate.
Hierarchy에서 GameObject를 생성할 때 사용합니다.
장면이 많지 않을 때는 아무 것도 의식이 없는 인스타넷은 장면에서 게임Object를 생성한다.
그렇다면 멀티플렉스에서 Instantiate라면 어떤 장면이 게임Object를 만들 수 있을까요?
장면을 개별적으로 열고 GameObject 만들기
Instantiate 장면을 열면 Instantiate가 적절한 Plefab(Cube)를 만듭니다.
버튼의 Addlistener는 Instantiate에서만 사용할 수 있습니다.[SerializeField] private Button _instantiatePrefabButton;
[SerializeField] private GameObject _prefab;
// Use this for initialization
private void Start()
{
_instantiatePrefabButton.onClick.AddListener(() => { Instantiate(_prefab); });
}
뭐, 장면이 하나밖에 없으니까 그 장면에 배치될 거야.
Additive 추가 Instantiate 장면으로 GameObject 만들기
먼저 적당한 장면을 열고, Additive로 Instantiate 장면을 엽니다.[SerializeField] private Button _addSceneButton;
private void Start()
{
addSceneButton.onClick.AddListener(() =>
SceneManager.LoadScene("Instantiate", LoadSceneMode.Additive));
}
그렇다면 Instantiate 장면에서 Instantiate의 GameObject는 도대체 어떤 장면으로 만들어질까
Instantiate 장면이 아닌 Main 장면으로 제작됐다.
대책(아미노산)
Instantiate 장면에서 적절한 하늘 게임Object를 만든 뒤 부모로서 게임Object를 만든다.private void Start()
{
_instantiatePrefabButton.onClick.AddListener(() => { Instantiate(_prefab, _transform); });
}
Instantiate 장면에서 GameObject를 만들었네요.
총결산
다중 장면을 사용할 때도 Hierrache에서 Instantiate의 위치를 주의해야 한다.
예를 들어 위의 예에서 Unload Instantiate 장면이 있더라도 Instantiate 장면에서 만들어졌던 GameObject는 삭제되지 않고 남아 있다.(실제로 이로 인해 오류가 생겼다)
Reference
이 문제에 관하여(멀티 장면을 이용한 개발에서 Instantiate라고 하면 예상치 못한 장면이 나옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/MasaKoha/items/6b6d458157ba771ea117
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[SerializeField] private Button _instantiatePrefabButton;
[SerializeField] private GameObject _prefab;
// Use this for initialization
private void Start()
{
_instantiatePrefabButton.onClick.AddListener(() => { Instantiate(_prefab); });
}
[SerializeField] private Button _addSceneButton;
private void Start()
{
addSceneButton.onClick.AddListener(() =>
SceneManager.LoadScene("Instantiate", LoadSceneMode.Additive));
}
private void Start()
{
_instantiatePrefabButton.onClick.AddListener(() => { Instantiate(_prefab, _transform); });
}
Reference
이 문제에 관하여(멀티 장면을 이용한 개발에서 Instantiate라고 하면 예상치 못한 장면이 나옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MasaKoha/items/6b6d458157ba771ea117텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)