我覺得這是一個糟糕的問題,但我無法弄清楚問題是什么。
我正在制作一個 ScoreController,我想制作一個硬幣物件,當被擊中時,它會在分數 GUI 上增加 100。所有的硬幣里面都有這個腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CoinScoreController : MonoBehaviour
{
public void OnTriggerEnter2D(Collider2D collider)
{
transform.parent.parent.parent.Find("Canvas/ScoreUIController").CollectCoin();
}
}
我可以認識到這是獲取物件的一種非常糟糕的方式,但我無法弄清楚問題所在。這是我試圖參考的腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScoreController : MonoBehaviour
{
public static int score = 0; //Number of coins
public static GameObject scoreUI; //A gameObject for the CoinUI
// Update is called once per frame
void Start()
{
scoreUI = GameObject.Find("ScoreUI"); //Automatically sets all coins to have their coinUI GameObject equal the CoinUI UI.
}
public void CollectCoin() //Runs when a coin is collected. Makes it disapear and adds one to the counter.
{
gameObject.SetActive(false);
score = 100;
scoreUI.GetComponent<Text>().text = "Score: " score.ToString();
}
public void KilledMonster()
{
score = 1000;
}
}
ScoreControllerUI 在 Canvas 內,所以我認為我沒有走錯路。你不能從場景中transform.Find() 嗎?這是我的場景:

我相信你會說,我是這個網站和 Unity 的新手,所以對于我提出這個問題的方式中的任何錯誤,我深表歉意。也請隨時給我建設性的批評。我正在使用統一版本 2020.3.24f1 并使用 C# 進行編碼。我不知道這是否相關,但我正在使用 Visual Studio 進行編碼。
再次為我犯的任何愚蠢的錯誤道歉。
uj5u.com熱心網友回復:
而不是使用
transform.parent.parent.parent.Find("Canvas/ScoreUIController").CollectCoin();
采用
GameObject.Find("Canvas/ScoreUIController").GetComponent<ScoreController>().CollectCoin();
建議:public ScoreController ScoreUIController在您的CoinScoreController(我假設您的硬幣是預制件)中定義 a 然后將其拖放ScoreUIController到其中以將您的腳本分配給我們定義的變數。現在,您可以致電
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CoinScoreController : MonoBehaviour
{
public ScoreController ScoreUIController;
public void OnTriggerEnter2D(Collider2D collider)
{
ScoreUIController.CollectCoin();
}
}
PS:請先按照教程閱讀檔案,因為我可以看到您的代碼非常繁重。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/438287.html
