我在我的游戏中添加奖章像飞鸟一样,一切正常,然后我就停止了,不知道该怎么办它给了我一个错误信息
NullReferenceException:未将对象引用设置为对象的实例 ScoreManager.Start()(在Assets / scripts / ScoreManager.cs:27)
我检查了代码行,他们一直工作正常,但代码相同。
但是,如果我删除该对象,它会告诉我下一个不正确的
分数脚本
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
private float score = 0f;
public Text Scoretext;
public MenuController deathmenu;
public GameObject IntroGUI, DeathGUI, Canvas;
private GameObject bronze;
private GameObject bronzesilver;
private GameObject silver;
private GameObject silvergold;
private GameObject gold;
void Start()
{
bronze = GameObject.Find("bronze");
bronzesilver = GameObject.Find("bronzesilver");
silver = GameObject.Find("silver");
silvergold = GameObject.Find("silvergold");
gold = GameObject.Find("gold");
bronze.GetComponent<Image>().enabled = false;
bronzesilver.GetComponent<Image>().enabled = false;
silver.GetComponent<Image>().enabled = false;
silvergold.GetComponent<Image>().enabled = false;
gold.GetComponent<Image>().enabled = false;
}
void Update()
{
//handle back key in Windows Phone
if (Input.GetKeyDown(KeyCode.Escape))
Application.Quit();
if (GameStateManager.GameState == GameState.Intro)
{
if (WasTouchedOrClicked())
{
GameStateManager.GameState = GameState.Playing;
IntroGUI.SetActive(false);
Canvas.SetActive(true);
}
}
else if (GameStateManager.GameState == GameState.Playing)
{
score += Time.deltaTime;
Scoretext.text = ((int)score).ToString();
if (PlayerPrefs.GetFloat("Highscore") < score)
PlayerPrefs.SetFloat("Highscore", score);
if (score > 2)
{
bronze.GetComponent<Image>().enabled = true;
}
if (score > 4)
{
bronzesilver.GetComponent<Image>().enabled = true;
}
if (score > 7)
{
silver.GetComponent<Image>().enabled = true;
}
if
(score > 9)
{
silvergold.GetComponent<Image>().enabled = true;
}
if
(score > 12)
{
gold.GetComponent<Image>().enabled = true;
}
deathmenu.ToggleEndMenu(score);
}
}
void FixedUpdate()
{
//just jump up and down on intro screen
if (GameStateManager.GameState == GameState.Intro)
{
}
else if
(GameStateManager.GameState == GameState.Playing || GameStateManager.GameState == GameState.Dead)
{
}
}
bool WasTouchedOrClicked()
{
if (Input.GetButtonUp("Jump") || Input.GetMouseButtonDown(0) ||
(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began))
return true;
else
return false;
}
void OnCollisionEnter2D(Collision2D col)
{
if (GameStateManager.GameState == GameState.Playing)
{
if (col.gameObject.tag == "CARS")
{
PlayerDies();
}
}
}
void PlayerDies()
{
GameStateManager.GameState = GameState.Dead;
DeathGUI.SetActive(true);
}
}