這是我的代碼。我看過其他帖子,但我找不到任何東西。
GetComponent(inGameText).text = money.ToString();
我還有一個文本變數:
public Text inGameText;
而且我不知道我是否必須將它作為游戲物件。
我也不知道這TextMesh部分是否是占位符,因為我是從另一個帖子中得到的。
uj5u.com熱心網友回復:
有不同的多載 GetComponent
你要么傳入一個型別,但你需要強制轉換
inGameText = ((Text)GetComponent(typeof (Text)));
或者你使用泛型
inGameText = GetComponent<Text>();
但是,在您的情況下,您似乎已經有了參考,只是想使用
inGameText.text = money.ToString();
并最終使用之前的方法之一將值分配給inGameText如果未通過檢查器完成
uj5u.com熱心網友回復:
該GetComponent函式執行以下操作:給定UnityEngine.Component它的型別回傳該型別的第一個實體或派生 - 如果有的GameObject話- 在您呼叫該函式的基礎上。例如,如果您在檢查器中添加Text了某個 GameObject 上的組件,則可以通過呼叫gameObject.GetComponent.
你想使用的功能版本的定義如下:Component GetComponent(Type type)。這意味著它需要一個表示您感興趣的組件型別的引數并回傳一個通用組件參考,然后您需要將其顯式轉換為實際型別。要獲取 Type 值,您可以呼叫GetType()任何非空變數或使用typeof(<name_of_the_type).
為了做你想做的事,這是要使用的語法:
((Text)GetComponent(typeof(Text))).text = money.ToString()
雖然,由于您已經有一個公共 Text 變數,我假設您還從 Inspector 為它分配了一個值,這意味著您不需要實際呼叫GetComponent來給它一個文本值,但是撰寫就足夠了
inGameText.text = money.ToString();
我想指出的一件事是,您還可以選擇Component GetComponent(Type type),它更具可讀性T GetComponent<T>()。如果您對泛型不是很熟悉,我建議您研究一下它們,因為它們是 C# 中良好編程的基礎。但是在這種情況下,您基本上必須將其閱讀為:這是一個回傳 T 型別的函式,其中 T 是我通過在 <> 之間指定它來決定的。簡而言之,您的代碼將變為
GetComponent<Text>().text = money.toString();
請注意,使用此版本的函式,您不需要推斷Textusing的型別,typeof也不需要將結果顯式轉換為Text,因為使用泛型您已經準確地告訴函式您想要什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416065.html
標籤:
