Button 从Unity 4.6中的C#脚本创建UI按钮,无需任何预设

Button 从Unity 4.6中的C#脚本创建UI按钮,无需任何预设,button,unity3d,2d,Button,Unity3d,2d,我如何在Unity 4.6中创建一个带有文本标签的普通按钮,而不使用任何预设或克隆现有游戏对象?我将使用该按钮进行调试,因此我不想用该按钮扰乱设计层次结构。以下内容仅适用于Unity3(2012年之前)的传统“gui”系统。它现在不可用 将此功能添加到任何脚本中,它将在左上角显示100 x 100像素大小的按钮。然后将Debug.Log更改为您的调试代码 void OnGUI() // deprecated, use ordinary .UI now available in Unity {

我如何在Unity 4.6中创建一个带有文本标签的普通按钮,而不使用任何预设或克隆现有游戏对象?我将使用该按钮进行调试,因此我不想用该按钮扰乱设计层次结构。

以下内容仅适用于Unity3(2012年之前)的传统“gui”系统。它现在不可用

将此功能添加到任何脚本中,它将在左上角显示100 x 100像素大小的按钮。然后将
Debug.Log
更改为您的调试代码

void OnGUI() // deprecated, use ordinary .UI now available in Unity
{
    if(GUI.Button(new Rect(0, 0, 100, 100), "Debug!")){
        Debug.Log("Do some debugging");
    }
}

您需要为要实例化的UI元素创建一个预置。 之后,您可以像游戏对象一样管理ui元素,并使用GetComponet方法操纵属性和方法。
请参阅常见问题解答,您可以将其用于UI 4.6

    public void CreateButton(Transform panel ,Vector3 position, Vector2 size, UnityEngine.Events.UnityAction method)
{
    GameObject button = new GameObject();
    button.transform.parent = panel;
    button.AddComponent<RectTransform>();
    button.AddComponent<Button>();
    button.transform.position = position;
    button.GetComponent<RectTransform>().SetSize(size);
    button.GetComponent<Button>().onClick.AddListener(method);
}
public void CreateButton(变换面板,矢量3位置,矢量2大小,UnityEngine.Events.UnityAction方法)
{
GameObject按钮=新建GameObject();
button.transform.parent=面板;
AddComponent();
AddComponent();
button.transform.position=位置;
button.GetComponent().SetSize(大小);
button.GetComponent().onClick.AddListener(方法);
}

它可以工作。但是,没有办法使用4.6按钮吗?虽然我将其标记为正确的,但对于UI按钮,这个问题仍然没有答案。我发现自己几乎每天都在寻找指南。如果有人能发布一个有效的例子,我会检查答案。这个问题是关于4.6+的。GUI类已弃用/Legacy您不能使用unity3中非常旧的“GUI”系统-它现在已弃用且不可用。使用现在内置的非常简单的UI.Button系统来统一这种方法的问题是,在这种情况下,我不想用dev/debug元素来混乱设计,dev预置将放在生产预置中。我不想运送那些东西。这就是为什么我问“请不要预制”。相关线程:forum.unity3d.com/threads/creating-a-gui-from-code.263563我不确定这个问题怎么会重复,因为它写在2014年,而另一个问题写在2016年。即使它不是一个明确的重复,也根本没有显示任何研究成果。。