在 Unity 4.6 中从 C# 脚本创建 UI 按钮,无需任何预制件 [重复]
Posted
技术标签:
【中文标题】在 Unity 4.6 中从 C# 脚本创建 UI 按钮,无需任何预制件 [重复]【英文标题】:Create UI Button from C# script in Unity 4.6 without any prefabs [duplicate] 【发布时间】:2014-11-28 05:12:18 【问题描述】:如何在 Unity 4.6 中创建带有文本标签的普通按钮,而不使用任何预制件或克隆现有游戏对象?我将使用该按钮进行调试,所以我不想用这个按钮弄乱设计层次结构。
【问题讨论】:
相关线程:forum.unity3d.com/threads/creating-a-gui-from-code.263563 我不确定这个问题是如何重复的,因为它是在 2014 年写的,而另一个问题是在 2016 年写的。 即使它不是明确的重复,它也根本没有显示出任何研究成果.. 【参考方案1】:您可以将其用于 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);
【讨论】:
【参考方案2】:以下内容仅适用于 Unity3 的旧版“gui”系统(大约 2012 年之前)。它现在不可用。
将此函数添加到任何脚本中,它将在左上角显示 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");
【讨论】:
它有效。但是有没有办法使用4.6 Button? 虽然我将此标记为正确,但关于 UI 按钮的问题仍未得到解答。我发现自己几乎每天都在寻找方法。如果有人可以发布一个工作示例,我将改为检查该答案。 这个问题具体是关于 4.6+。 GUI 类已弃用/遗留 您不能使用来自 unity3 的非常古老的“gui”系统 - 现在已弃用且不可用。使用 Unity 现在内置的极其简单的 UI.Button 系统【参考方案3】:你需要为你想要实例化的 UI 元素创建一个预制件。 在您可以像游戏对象一样操作您的 ui 元素并使用 GetComponet 方法来操作属性和方法之后。 请参阅常见问题解答http://docs.unity3d.com/Manual/HOWTO-UICreateFromScripting.html
【讨论】:
这种方法的问题在于,在这种情况下,我不想用开发/调试元素混淆设计,开发预制件将位于生产预制件之间。我不想运送那些东西。这就是为什么我问“请不要使用预制件”。以上是关于在 Unity 4.6 中从 C# 脚本创建 UI 按钮,无需任何预制件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Unity3d 4.6 GUI - 按钮单击脚本从预制中消失
Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
某些 Windows 8 和 8.1 上的 Unity3d 4.6 UI 图像错误