2016-06-21 5 views
0
그래서 내가 축구 크로스바 챌린지 게임을 프로그래밍하고있어 (이 이제까지 내 첫 게임이다)

Unity3D 작동하지 나는 다음과 같습니다 크로스바에 스크립트 추가 :점수 카운터는

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 
public class crossbarscript : MonoBehaviour { 
public AudioSource ping; 
public static int score; 
public Rigidbody rb; 
public Text text; 

// Use this for initialization 
void Start() { 
    ping = GetComponent<AudioSource>(); 

    rb = GetComponent<Rigidbody>(); 
    score = 0; 


} 

// Update is called once per frame 
public void OnCollisionEnter (Collision col) { 

    if(col.gameObject.name == "Ball") 
    { 

     text = GetComponent<Text>(); 
     text.text = "Score: " + score; //This is the line the error is pointing at 

     ping.Play(); 
     rb.freezeRotation = true; 
    } 



} 
} 

그리고의를 콘솔, 내가 이것을 얻을 : NullreferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다

내가 뭘하려고하는지 공이 크로스바 (스크립트가 첨부 된 개체를 때릴 때마다 그렇게되도록 만드는 것입니다) 왼쪽 위 모서리에있는 텍스트의 점수에 추가됩니다. 이 문제를 해결할 방법이 있는지 아니면 다른 방법으로해야하는지 알려주세요. 감사합니다.

+0

[NullReferenceException이란 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) –

+0

해당 오류를 클릭하고 오류의 원인이되는 코드 행을 사용하여 질문을 편집하십시오. – Programmer

+0

@Programmer 완료. –

답변

3

라인

text = GetComponent<Text>(); 

은 불필요하며 문제를 일으키는 것입니다. 이 스크립트를 실행하는 GameObject에 Text 구성 요소가없고 null을 다시 시도하면 text.text이 다음 줄에서 실패합니다.

충돌 코드에서 GetComponent<Text>() (으)로 전화 할 필요가 없습니다. 공용 변수가 이미 있습니다. Text 개체를 스크립트로 드래그하여 디자이너에 설정해야합니다. 일단 거기에 설정하면 코드에서 설정할 필요가 없습니다.

코드에서 Text을 사용하여 점수를 표시하는 방법에 대한 예는 롤 - 볼 - 학습서 "3.3: Displaying the Score and Text"을 참조하십시오.

+0

그래서 나는 당신이 말한 것처럼 그 줄을 제거했고, 같은 줄을 가리키는 동일한 오류를 내게줍니다. Text 객체를 스크립트로 드래그한다는 것은 무엇을 의미합니까? –

+0

동영상을 보았습니다. 내가 링크 된 Text 개체로 작업 한 것을 수행합니다. 처음으로 유니티를 배우는 중이라면 시리즈의 첫 번째 비디오부터 시작하여 롤 - 어 - 볼 (Roll-a-Ball) 시리즈 전체에서 작업하는 것이 좋습니다. 일단 끝나면 다른 튜토리얼 비디오 시리즈로 이동합니다. –

+0

특히 동영상에서 [7:47 포인트] (https://youtu.be/bFSLI2cmYYo?t=467)에서 수행해야 할 단계가 필요합니다. –

관련 문제