UI Unity 中的按钮,如何以编程方式同时设置 GUIStyle 和 parent?
UI Buttons in Unity, how to set a GUIStyle and a parent at the same time programmatically?
我正在尝试生成 UI 按钮,但遇到了麻烦。当我使用
GUI.Button(new Rect(...), texture, GUIStyle);
我可以设置按钮位置、GUI样式和纹理(这是我需要的),但我还需要将一个面板设置为每个按钮的父级,有一个方法叫做
transform.setParent(游戏对象);
但是 GUI.Button returns 一个布尔值。我可以创建一个
var b = new 按钮();
但我不知道如何为对象 Button 提供 GUIStyle 或纹理。我需要从 Csharp 脚本中解决整个问题。设置按钮样式和纹理,同时设置按钮父级!谢谢
GUI class 不会在场景图中创建任何游戏对象,因此您无法定义它们之间的关系。
如果您想要实际的 UI 对象,您可以操纵这些对象并将其放入层次结构中,则必须使用 Unity 的新 GUI 系统(推荐)。
如果您不想使用它,则必须自己计算 UI 的相对位置,例如
Vector2 parentPos = ...;
GUI.Label(new Rect(parentPos.x, parentPos.y, 10, 10), "Label");
Vector2 childPos = ...;
GUI.Button(new Rect(parentPos.x + childPos.x, parentPos.y + childPos.y, 10, 10), "Button");
作为替代方案,GUI class 也支持转换矩阵。
GUI.matrix = Matrix4x4.identity;
Vector2 parentPos = ...;
GUI.Label(new Rect(parentPos.x, parentPos.y, 10, 10), "Label");
GUI.matrix = Matrix4x4.TRS(parentPos, Quaternion.identity, Vector3.one);
Vector2 childPos = ...;
GUI.Button(new Rect(childPos.x, childPos.y, 10, 10), "Button");
这允许您自己构建一个 GUI 场景图。
我正在尝试生成 UI 按钮,但遇到了麻烦。当我使用
GUI.Button(new Rect(...), texture, GUIStyle);
我可以设置按钮位置、GUI样式和纹理(这是我需要的),但我还需要将一个面板设置为每个按钮的父级,有一个方法叫做
transform.setParent(游戏对象);
但是 GUI.Button returns 一个布尔值。我可以创建一个
var b = new 按钮();
但我不知道如何为对象 Button 提供 GUIStyle 或纹理。我需要从 Csharp 脚本中解决整个问题。设置按钮样式和纹理,同时设置按钮父级!谢谢
GUI class 不会在场景图中创建任何游戏对象,因此您无法定义它们之间的关系。
如果您想要实际的 UI 对象,您可以操纵这些对象并将其放入层次结构中,则必须使用 Unity 的新 GUI 系统(推荐)。 如果您不想使用它,则必须自己计算 UI 的相对位置,例如
Vector2 parentPos = ...;
GUI.Label(new Rect(parentPos.x, parentPos.y, 10, 10), "Label");
Vector2 childPos = ...;
GUI.Button(new Rect(parentPos.x + childPos.x, parentPos.y + childPos.y, 10, 10), "Button");
作为替代方案,GUI class 也支持转换矩阵。
GUI.matrix = Matrix4x4.identity;
Vector2 parentPos = ...;
GUI.Label(new Rect(parentPos.x, parentPos.y, 10, 10), "Label");
GUI.matrix = Matrix4x4.TRS(parentPos, Quaternion.identity, Vector3.one);
Vector2 childPos = ...;
GUI.Button(new Rect(childPos.x, childPos.y, 10, 10), "Button");
这允许您自己构建一个 GUI 场景图。