有兩個腳本可以從迷你游戲中獲取硬幣,這些腳本與我在其他游戲中使用的腳本相同,但由于某種原因,無法在這里作業,我對此仍然很陌生,所以......在這里。
public class Monedos : MonoBehaviour
{
public static int Score;
public GameObject ScoreText;
// Start is called before the first frame update
void Update()
{
ScoreText.GetComponent<Text>().text = "" Score;
}
}
而另一個
public class CollectGold : MonoBehaviour
{
public AudioSource OroFX;
void OnTriggerEnter(Collider other)
{
OroFX.Play();
Monedos.Score ;
this.gameObject.SetActive(false);
}
}
游戲中的一切都按應有的方式設定,但游戲無法正常作業,錯誤:
NullReferenceException: Object reference not set to an instance of an object
Monedos.Update () (at Assets/Scripts/Monedos.cs:15)
首先,我認為這是 textmeshpro 的原因,但 text legacy 也不起作用..
將文本更改為 textmeshpro,修改游戲物件以確保我沒有使用錯誤的物件,實際上是從作業游戲中復制和粘貼,但仍然沒有任何效果。
uj5u.com熱心網友回復:
看起來您忘記在 Monedos 的檢查器中放置 ScoreText 的鏈接,或者 ScoreText 沒有型別為文本的組件。
順便說一句,靜態是一種不好的做法,因此您可以將 Monedos 欄位型別放入 CollectGold,然后在檢查器中放置一個鏈接,這樣您就可以從 Monedos 實體中獲取 Score 值。
在每個框架的 Update 方法中為某些文本組件設定文本是一種不好的做法。制定一個設定方法,僅在需要更改文本時呼叫
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533273.html
標籤:C#unity3d
上一篇:移動到原始位置