private InputField[] InpPos = new InputField[4];
InpPos[i] = 但是用之前必須對單個變數進行實體化
這個咋實體化啊
不能寫成InpPos[i] = new InputField(); 報錯
uj5u.com熱心網友回復:
因為UI的互動控制元件中的核心腳本本身并不是一個可見的 UI 元素,必須與一個或多個可視 UI 元素結合起來才能顯示,因此Unity規定其是不能被公開實體化的,所以只能從資源中加載出來。你可利用GetComponentsInChildren<>方法得到所有的InputField從而進行賦值。例如:
for (int i = 0; i < inputFields.Length; i++) {
inputFields[i] = GetComponentsInChildren<InputField>()[i];
}
需要注意的一點就是GetComponentsInChildren的檢測是從自身開始的,并根據Hierarchy中的順序進行向下檢測
uj5u.com熱心網友回復:
你可以在編輯器里建好InputField,然后拖到你的陣列上uj5u.com熱心網友回復:
new Class[]創建的是陣列物件
陣列物件需要在創建的時候指定大小,但是里頭的型別都是默認值,如果是class那就是null,
需要對值進行再次設定
你也可以直接 new class[]{ new class(), new class(), ...}; 直接初始化陣列內的成員
如果是Unity的Component物件,一沒人做new Component這樣的事情 因為所有的組件都是掛在GameObject上 需要使用GetComponent等方法獲取再設定到陣列中。當然也可以通過將定義的陣列public出去 在界面進行拖拉實作填值操作
uj5u.com熱心網友回復:
copy 一個現成的用多少個就copy多少次 用 Instantiate(); so easyuj5u.com熱心網友回復:
也可以動態創建出來,然后getComponent,獲取到InputField,然后賦值uj5u.com熱心網友回復:
在for回圈里面進行初始化轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/47421.html
標籤:Unity3D
上一篇:unity中的光照模型
