我正在使用C#
和Unity 5.6.1f1
,我做了一個機制,點擊UI按鈕應該添加一個額外的按鈕與文本到Panel已經在用戶界面上,它確實工作......因爲我能看到對象出現在那裏添加按鈕與文本動態UI在運行時在Unity
public void MakeButton(string direction)
{
GameObject button = new GameObject();
button.AddComponent<RectTransform>();
button.AddComponent<Button>();
var panel = GameObject.Find("CommandPanel");
button.transform.position = panel.transform.position;
button.GetComponent<RectTransform>().SetParent(panel.transform);
button.GetComponent<RectTransform>().SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left,0,10);
button.SetActive(true);
button.layer = 5;
//button.GetComponentsInChildren<Text>()[0].text = "New Super Cool Button Text";
}
問題是,它是不可見的,原因在於我認爲,沒有文字那裏......現在我該怎麼辦知道...
我試圖運行下面的button.GetComponentsInChildren<Text>()[0].text = "New Super Cool Button Text";
,它給了我
IndexOutOfRangeException:數組索引超出範圍。 Hero.MakeButton(System.String方向)(在Assets/Scripts/Hero.cs:37) Hero.Down()(在Assets/Scripts/Hero.cs:14) UnityEngine.Events.InvokableCall.Invoke(System (在C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:154) UnityEngine.Events.InvokableCallList.Invoke(System.Object [] parameters)(at C:/ buildslave/Unity/build/Runtime/Export/UnityEvent.cs:637) UnityEngine.Events.UnityEventBase.Invoke(System.Object [] parameters)(at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:773 )(在C:/ buildslave/unity/build/run//build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:35) Unity Engine.UI.Button.OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData)(在C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:44) UnityEngine.EventSystems.ExecuteEvents .Execute(IPointerClickHandler處理程序,UnityEngine.EventSystems.BaseEventData eventData)(在C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50) UnityEngine.EventSystems.ExecuteEvents.Execute [IPointerClickHandler ](UnityEngine.GameObject target,UnityEngine.EventSystems.BaseEventData eventData,UnityEngine.EventSystems.EventFunction`1 functor)(在C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261) UnityEngine.EventSystems.EventSystem:Update()
而且你可以在截圖中看到,沒有三角在New Game Object
喜歡它Run
下,這也是一個按鈕...
如何從具有文本上它面板在Unity腳本按鈕添加?
@Hellium答案是正確的,但我只是補充說,你可以通過代替'GameObject按鈕=新的GameObject();'''與GameObject按鈕=新遊戲對象(「Button_Name」,新類型[] {typeof(圖片) ),typeof(Button)});'。當然,你需要用'Text'組件創建另一個對象,然後將它設置爲child。 – Kardux