2016-09-06 1 views
0

캔버스 요소의 특정 게임 객체를 활성 상태 (SetActive (true))로 설정하면 좋은 순간 정도 지연됩니다. 순차적 인 활성화는 즉각적입니다. 독립 실행 형 플레이어에서만 발생합니다. 편집기에서 전혀 지연되지 않습니다. 내 생각 엔 분명히 자산을 처음으로로드해야한다는 것입니다. 그러나 어떤 방식 으로든이 특정 자산을 사전로드 할 수 있습니까? 나는 최적화 하에서 빌드 설정에서 그렇게하려고 시도했지만, 아무 것도 영향을 미치지 않았다. 그리고 아니요, 나는 Start() 함수 또는 OnEnable() 함수가 활성화 된 해당 게임 객체의 코드를 가지고 있지 않습니다.처음으로 게임 객체를 활성 상태로 설정하면

답변

0

해결되었습니다. 나중에 다른 사용자의 경우 :

로컬 눈금을 사용하지 않을 경우 0으로 설정하고 사용하도록 설정하면 1로 설정합니다. 좋아요 :

playerUI.transform.localScale = new Vector3(0, 0, 0); 

playerUI.transform.localScale = new Vector3(1, 1, 1); 

그런 식으로 유니티는 전에 개체를로드합니다.

0

예상대로입니다. 지연은 UI 구성 요소와 Canvas의 계층 구조 아래에있는 GameObjects 수에 따라 다릅니다. Canvas 또는 UI 구성 요소에서 SetActive(true)을 사용하면 많은 메모리 할당과 그리기 호출이 발생합니다. 수정은 간단합니다. UI에 SetActive(true)을 사용하는 대신 enabled 속성을 수정하여 구성 요소를 사용하지 않도록 설정하십시오.

예를 들어

가, 사용/사용하여 Canvas 비활성화 :

Canvas canvas; 
canvas.enabled = true; //Enable 
canvas.enabled = false; //Disable 

이의 당신 만 Canvas 아래 Text 구성 요소를 사용하지 않으려한다고 가정 해 봅시다 대신 SetActive(true)Text 구성 요소를 비활성화 할 수 enabled 속성을 사용합니다. 동일한 기능이 다른 UI 구성 요소에도 적용됩니다.

+0

사용에 지침이 필요합니까? Unity는 그것에 대해 행복하지 않습니다. 나는 'enabled = false;'를 사용하여 시도했다. 내가 선언 한 GameObject에 그것은 좋아하지 않습니다. – GMR516

+0

UnityEngine.UI를 사용하여 Unity UI를 가져와야합니다. 또한'canvas' 변수를 public으로 만들어서 편집기에서 할당 할 수 있도록해야합니다 .... 또한'canvas.enabled = true;'와'canvas.enabled = false;'는 반드시 함수에 넣어야합니다. – Programmer

+0

내 질문을 잘못 이해하고 있다고 생각합니다. 거기에 내가 활성화/비활성화하려는 다른 요소가 포함 된 gameobject가 있습니다. 캔버스는 항상 활성화되어 있습니다. 다른 것들도 있습니다. 'enabled'는 GameObjects에는 존재하지 않습니다. – GMR516

관련 문제