2017-03-07 8 views
0

텍스트를 표시 할 수 없으며 메서드가 실행될 때 NullReferenceException이 발생합니다. 그 위에 코드가 실행을 멈추지 않습니다.표시 할 유니티 2D의 텍스트를 얻는 방법

// Use this for initialization 
void Start() 
{ 
    // Default position not valid? Then it's game over 
    if (!isValidGridPos()) 
    { 
     Text text; 
     text = GetComponent<Text>(); 

     text.text = "Game Over"; 
     Destroy(gameObject); 
     if (Input.GetKeyDown(KeyCode.R)) 
     { 
      SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); 
     } 

    } 
} 

코드는 this tutorial에서옵니다. 방금 다시 시작하고 게임 오버 메시지를 추가하려고했습니다.

EDIT : text = GetComponent()가 포함 된 텍스트를 표시하려고하지 않습니다. 실제로 작동하는 화합에 텍스트를 표시하는 또 다른 방법은 무엇입니까? 나는 GUIText도 시도했지만 표시 할 수는 없습니다.

+0

정확히 오류가 라인에서 발생되는 같은 게임 오브젝트에 있는지 확인? 'isValidGridPos()'에서 온 것이 아니라고 확신합니까? – Serlite

+0

"텍스트"에 메시지를 추가 할 때. – ffuentes

+2

코드를 편집했습니다.이 스크립트가 첨부 된 객체에 텍스트 구성 요소가 연결되어 있습니까? – Serlite

답변

-2

실행하는 동안 편집기보기를 검사 했습니까?
Strar()에서 destroy를 사용하지 마십시오. Destroy (gameobject, 5.0f)와 같이 지연을 설정하고 다른 콜백 함수 (예 : Action)에서 사용할 수 있습니다.

이제 게임 객체 전체를 초기화 한 직후 모든 스크립트 및 구성 요소 (텍스트 포함)를 파괴합니다. 그것이 처음부터 장면에 있다면, 당신이 Play를 누르면 곧 파괴됩니다.

Start()는 한 번만 실행되므로 isValidGridPos()는 무엇을하고 있습니까?

0

나는 튜토리얼 살펴 보았다 그리고 그들은 다음과 같은 코드가 있습니다 : 그것은 디버그 로그 콘솔에 출력하기 때문에 작동

if (!isValidGridPos()) { 
    Debug.Log("GAME OVER"); 
    Destroy(gameObject); 
} 

합니다. 당신은 분명히 그것을 캡처하여 화면에 인쇄하고 싶습니다. 이렇게하려면 스크립트가있는 게임 객체에 캔버스와 텍스트 구성 요소를 추가해야합니다. 여기에 텍스트 변수를 선언하면 게임 객체에 텍스트 변수가 추가되지 않습니다.이 속성은 단일 속성 관리자에서 수행해야합니다.

다음 코드 :

if (Input.GetKeyDown(KeyCode.R)) 
    { 
     SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); 
    } 

이 객체가 이미이 코드를 파괴됩니다대로 객체가 생성되는 동일한 프레임에서 아래로 키를 보유하지 않는 한 쓸모없는 렌더링됩니다, 여기 안 . 대신 파괴되지 않는 게임 객체의 다른 스크립트에 있어야하며 레벨을 다시로드하기 위해 r 키를 기다릴 것입니다.

0

text = GetComponent<Text>();이 작동하지 않는 것은 텍스트 구성 요소가 스크립트가 연결된 동일한 게임 개체에 없기 때문일 수 있습니다. 유니티 편집기에서

, 텍스트 구성 요소와 스크립트가