版本: Unity 6 (6000.0)
语言English
  • C#

CustomBinding

UnityEngine.UIElements 中的类

/

继承自:UIElements.Binding

/

实现于:UnityEngine.UIElementsModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项更改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

通用绑定扩展性的基类。

以下示例创建了一个自定义绑定,用于显示当前时间。您可以将其绑定到 Label 的文本字段以创建时钟。

using System;
using Unity.Properties;
using UnityEngine.UIElements;

[UxmlObject] public partial class CurrentTimeBinding : CustomBinding { [UxmlAttribute] public string timeFormat = "HH:mm:ss";

public CurrentTimeBinding() { updateTrigger = BindingUpdateTrigger.EveryUpdate; }

protected override BindingResult Update(in BindingContext context) { var timeNow = DateTime.Now.ToString(timeFormat); var element = context.targetElement; if (ConverterGroups.TrySetValueGlobal(ref element, context.bindingId, timeNow, out var errorCode)) return new BindingResult(BindingStatus.Success);

// Error handling var bindingTypename = TypeUtility.GetTypeDisplayName(typeof(CurrentTimeBinding)); var bindingId = $"{TypeUtility.GetTypeDisplayName(element.GetType())}.{context.bindingId}";

return errorCode switch { VisitReturnCode.InvalidPath => new BindingResult(BindingStatus.Failure, $"{bindingTypename}: Binding id `{bindingId}` is either invalid or contains a `null` value."), VisitReturnCode.InvalidCast => new BindingResult(BindingStatus.Failure, $"{bindingTypename}: Invalid conversion from `string` for binding id `{bindingId}`"), VisitReturnCode.AccessViolation => new BindingResult(BindingStatus.Failure, $"{bindingTypename}: Trying set value for binding id `{bindingId}`, but it is read-only."), _ => throw new ArgumentOutOfRangeException() }; } }

公共方法

更新当绑定系统更新绑定时调用。

继承的成员

属性

isDirty设置为 true 时,绑定实例在下一个更新周期中更新。设置为 false 时,绑定实例仅在检测到更改时更新。
updateTrigger设置为 BindingUpdateTrigger.EveryUpdate 时,绑定实例在每次更新中都会更新,而不管数据源版本如何。

公共方法

MarkDirty通知绑定系统处理此绑定。
OnActivated当绑定对特定 VisualElement 变得活跃时调用。
OnDataSourceChanged当绑定的已解析数据源发生更改时调用。
OnDeactivated当绑定不再对特定 VisualElement 处于活动状态时调用。

静态方法

ResetPanelLogLevel重置面板上绑定失败的日志级别以使用全局设置。
SetGlobalLogLevel设置所有绑定失败的日志级别。
SetPanelLogLevel设置面板上绑定失败的日志级别。