技术用户可以直接在 C# 脚本一段代码,允许您创建自己的组件,触发游戏事件,随着时间推移修改组件属性,并以您喜欢的任何方式响应用户输入。 更多信息
在 词汇表 中查看 中定义 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
在 词汇表 中查看 的布局。
您可以在 USS 文件中定义控件的外观,或者 在您的 C# 脚本中修改控件的样式属性。
控件是交互式的,代表您可以更改的值。例如,FloatField
代表一个浮点值。您可以创建 C# 脚本更改控件的值,注册回调或应用数据绑定。
要在 UI 中使用控件,请将其添加到 可视化树由轻量级节点组成的对象图,它包含窗口或面板中的所有元素。它定义了您使用 UI 工具包构建的每个 UI。
在 词汇表 中查看 中。
以下示例将 Button 控件添加到现有的可视化树中。
var newButton = new Button("Click me!");
rootVisualElement.Add(newButton);
在将控件添加到 UI 层次结构时,布局引擎 会自动处理大小和定位。您也可以 覆盖可视元素的大小和位置。
要访问或更改控件的值,请使用它的 value
属性。
以下示例创建了一个 Toggle 控件和一个 Button 控件。当您单击按钮时,切换的值会翻转。
// Create a toggle and register callback
m_MyToggle = new Toggle("Test Toggle") { name = "My Toggle" };
rootVisualElement.Add(m_MyToggle);
// Create button to flip the toggle's value
Button button01 = new Button() { text = "Toggle" };
button01.clicked += () =>
{
m_MyToggle.value = !m_MyToggle.value;
};
rootVisualElement.Add(button01);
有关特定控件的属性的更多信息,请参见 UI 工具包内置控件参考。
具有 value
属性的控件如果值发生变化会发送事件。您可以注册回调来接收此事件。
以下示例创建了一个 Toggle 控件并注册了一个回调
// Create a toggle and register callback
m_MyToggle = new Toggle("Test Toggle") { name = "My Toggle" };
m_MyToggle.RegisterValueChangedCallback((evt) => { Debug.Log("Change Event received"); });
rootVisualElement.Add(m_MyToggle);
要了解有关回调和事件的更多信息,请参见 事件处理。
您可以将控件绑定到对象或序列化属性。例如,您可以将 FloatField 控件绑定到属于 MonoBehaviour
的公共浮点变量。当控件绑定到属性时,它会自动显示属性的值。当您修改控件时,属性的值会更新。
类似地,当属性值通过代码更改时,UI 会显示更新的值。这种双向连接在创建自定义 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑这些值。 更多信息
在 词汇表 中查看 窗口时非常有用。
有关数据绑定的更多信息,请参见 序列化对象数据绑定。
并非所有控件都可绑定。有关内置控件列表及其是否支持绑定的信息,请参见 UI 工具包内置控件参考。
某些控件具有 只读子元素。例如,ListView
控件有一个 ScrollView
子元素。您可以使用 UQuery 访问子元素的属性并覆盖其值。
以下示例通过覆盖 ScrollView
子元素的 mouseWheelScrollSize
属性来更改 ListView
控件的滚动速度
var scrollView = listView.Q<ScrollView>();
scrollView.mouseWheelScrollSize = 55;
控件有不同的状态,您可以在 C# 脚本中管理这些状态。例如,您可以启用或禁用控件。
以下示例创建了一个 Toggle 控件和一个 Button 控件。当您单击按钮时,切换会被禁用。
// Create a toggle.
Toggle myToggle = new Toggle("A Toggle");
// Create a button to disable the toggle.
Button button01 = new Button();
button01.text = "Button01";
button01.RegisterCallback<ClickEvent>(evt =>
{
myToggle.SetEnabled(false);
});
您还可以使用 USS 中的 伪类 在状态更改时实现可视反馈更改。例如,要禁用切换,请使用具有 disabled
伪状态的选择器
.unity-button:disabled
{
background-color: #000000;
}