Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


CustomBinding

Base class for general purpose binding extensibility.
Read time 1 minuteLast updated 6 days ago

Definition

[UxmlObject]public abstract class CustomBinding : Binding

Remarks

The following example creates a custom binding that displays the current time. You can bind it to the text field of a Label to create a clock.

Examples

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() }; }}

Constructors

Constructor

Description

CustomBinding()Initializes and returns an instance of CustomBinding.

Inheritance