我正在嘗試通過腳本創建文本。我想用某個標簽的物件名稱創建文本。
“例如,如果我有兩個名為 Cube 和 Sphere 的物件,并且都有一個“TargetObj”標簽,那么它們的名稱應該在螢屏上顯示為文本(在 Cube 和 Sphere 的情況下)”
無論物件的數量如何,我都想實作這一點。所以需要一個回圈。
這是我迄今為止嘗試過的。
[SerializeField] GameObject LevelCanvas;
targetObjects = GameObject.FindGameObjectsWithTag("TargetObj");
foreach (var obj in targetObjects)
{
Text mytext = LevelCanvas.AddComponent<Text>();
mytext.text = "Find " obj.name;
Font ArialFont = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
mytext.font = ArialFont;
mytext.material = ArialFont.material;
}
它只顯示一個物件名稱,盡管我還有 2 個應該顯示的物件。
請幫忙。
uj5u.com熱心網友回復:
您需要在新游戲物件上創建文本物件。
static Text CreateText(Transform parent)
{
var go = new GameObject();
go.transform.parent = parent;
var text = go.AddComponent<Text>();
return text;
}
var mytext = CreateText(LevelCanvas.transform);
myext.text = ...
uj5u.com熱心網友回復:
許多統一的組件只能為每個游戲物件添加一次。這意味著對于要顯示的每個文本,您都需要一個單獨的游戲物件。解決這個問題的典型方法是創建一個已經具有文本元素的游戲物件的“預制件”。這樣您就可以設定默認字體和其他設定。
然后在代碼中,您在該預制件上使用 Instantiate 方法,并通過 GetComponent() 訪問文本組件實體以設定要顯示的所需字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/383970.html
上一篇:QtWidget沒有顯示
