docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class CodeBlock

    A reusable code-block VisualElement: a header row with an optional language label and a copy-to-clipboard button (revealed on hover) above a monospaced body. When App UI's TextMate integration is enabled (APPUI_ENABLE_SYNTAX_HIGHLIGHTING), the active grammar and theme are resolved from two USS custom properties on this element:

    • --codeblock-grammar — GUID string of a TextMateGrammarAsset.
    • --codeblock-theme — GUID string of a TextMateThemeAsset.
    Setting language automatically toggles a appui-code-block--lang-<value> class so per-language grammar mappings can be expressed declaratively in USS (see PackageResources/Styles/Components/CodeBlock.uss). Asset resolution from GUID requires the editor; in built players the body falls back to plain monospaced text.
    Inheritance
    object
    CallbackEventHandler
    Focusable
    VisualElement
    BaseVisualElement
    CodeBlock
    Implements
    IEventHandler
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IResolvedStyle
    IContextOverrideElement
    IAdditionalDataHolder
    Inherited Members
    BaseVisualElement.contextPrefix
    BaseVisualElement.scaleOverride
    BaseVisualElement.themeOverride
    BaseVisualElement.langOverride
    BaseVisualElement.layoutDirectionOverride
    BaseVisualElement.preferredTooltipPlacementOverride
    BaseVisualElement.tooltipDelayMsOverride
    BaseVisualElement.GetLayoutDirectionUssClassName(Dir)
    VisualElement.disabledUssClassName
    VisualElement.ExecuteDefaultAction(EventBase)
    VisualElement.Focus()
    VisualElement.SendEvent(EventBase)
    VisualElement.SetEnabledFromHierarchy(bool)
    VisualElement.SetEnabled(bool)
    VisualElement.MarkDirtyRepaint()
    VisualElement.ContainsPoint(Vector2)
    VisualElement.Overlaps(Rect)
    VisualElement.DoMeasure(float, VisualElement.MeasureMode, float, VisualElement.MeasureMode)
    VisualElement.ToString()
    VisualElement.GetClasses()
    VisualElement.ClearClassList()
    VisualElement.AddToClassList(string)
    VisualElement.RemoveFromClassList(string)
    VisualElement.ToggleInClassList(string)
    VisualElement.EnableInClassList(string, bool)
    VisualElement.ClassListContains(string)
    VisualElement.FindAncestorUserData()
    VisualElement.Add(VisualElement)
    VisualElement.Insert(int, VisualElement)
    VisualElement.Remove(VisualElement)
    VisualElement.RemoveAt(int)
    VisualElement.Clear()
    VisualElement.ElementAt(int)
    VisualElement.IndexOf(VisualElement)
    VisualElement.Children()
    VisualElement.Sort(Comparison<VisualElement>)
    VisualElement.BringToFront()
    VisualElement.SendToBack()
    VisualElement.PlaceBehind(VisualElement)
    VisualElement.PlaceInFront(VisualElement)
    VisualElement.RemoveFromHierarchy()
    VisualElement.GetFirstOfType<T>()
    VisualElement.GetFirstAncestorOfType<T>()
    VisualElement.Contains(VisualElement)
    VisualElement.FindCommonAncestor(VisualElement)
    VisualElement.viewDataKey
    VisualElement.userData
    VisualElement.canGrabFocus
    VisualElement.focusController
    VisualElement.usageHints
    VisualElement.transform
    VisualElement.layout
    VisualElement.contentRect
    VisualElement.paddingRect
    VisualElement.worldBound
    VisualElement.localBound
    VisualElement.worldTransform
    VisualElement.pickingMode
    VisualElement.name
    VisualElement.enabledInHierarchy
    VisualElement.enabledSelf
    VisualElement.visible
    VisualElement.generateVisualContent
    VisualElement.experimental
    VisualElement.hierarchy
    VisualElement.cacheAsBitmap
    VisualElement.parent
    VisualElement.panel
    VisualElement.visualTreeAssetSource
    VisualElement.this[int]
    VisualElement.childCount
    VisualElement.schedule
    VisualElement.style
    VisualElement.customStyle
    VisualElement.styleSheets
    VisualElement.tooltip
    VisualElement.resolvedStyle
    Focusable.Blur()
    Focusable.focusable
    Focusable.tabIndex
    Focusable.delegatesFocus
    CallbackEventHandler.RegisterCallback<TEventType>(EventCallback<TEventType>, TrickleDown)
    CallbackEventHandler.RegisterCallback<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType>, TUserArgsType, TrickleDown)
    CallbackEventHandler.UnregisterCallback<TEventType>(EventCallback<TEventType>, TrickleDown)
    CallbackEventHandler.UnregisterCallback<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType>, TrickleDown)
    CallbackEventHandler.HandleEvent(EventBase)
    CallbackEventHandler.HasTrickleDownHandlers()
    CallbackEventHandler.HasBubbleUpHandlers()
    CallbackEventHandler.ExecuteDefaultActionAtTarget(EventBase)
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: Unity.AppUI.UI
    Assembly: Unity.AppUI.dll
    Syntax
    public class CodeBlock : BaseVisualElement, IEventHandler, ITransform, ITransitionAnimations, IExperimentalFeatures, IVisualElementScheduler, IResolvedStyle, IContextOverrideElement, IAdditionalDataHolder

    Constructors

    CodeBlock()

    Default constructor.

    Declaration
    public CodeBlock()

    Fields

    bodyUssClassName

    The USS class applied to the source-code body element.

    Declaration
    public const string bodyUssClassName = "appui-code-block__body"
    Field Value
    Type Description
    string

    copyButtonUssClassName

    The USS class applied to the copy / checkmark button.

    Declaration
    public const string copyButtonUssClassName = "appui-code-block__copy-btn"
    Field Value
    Type Description
    string

    headerSpacerUssClassName

    The USS class applied to the flexible spacer between the language label and the copy button.

    Declaration
    public const string headerSpacerUssClassName = "appui-code-block__header-spacer"
    Field Value
    Type Description
    string

    headerUssClassName

    The USS class applied to the header row.

    Declaration
    public const string headerUssClassName = "appui-code-block__header"
    Field Value
    Type Description
    string

    hoveredUssClassName

    The USS class toggled while the pointer is anywhere over this element. Used to reveal the copy button.

    Declaration
    public const string hoveredUssClassName = "appui-code-block--hovered"
    Field Value
    Type Description
    string

    languageUssClassName

    The USS class applied to the language label inside the header.

    Declaration
    public const string languageUssClassName = "appui-code-block__language"
    Field Value
    Type Description
    string

    languageVariantUssClassNamePrefix

    Prefix of the per-language modifier class added when language is set.

    Declaration
    public const string languageVariantUssClassNamePrefix = "appui-code-block--lang-"
    Field Value
    Type Description
    string

    lineNumbersUssClassName

    The USS class applied to the optional left-side line-numbers gutter.

    Declaration
    public const string lineNumbersUssClassName = "appui-code-block__line-numbers"
    Field Value
    Type Description
    string

    scrollUssClassName

    The USS class applied to the scrollable area that wraps the line-numbers gutter and the body.

    Declaration
    public const string scrollUssClassName = "appui-code-block__scroll"
    Field Value
    Type Description
    string

    ussClassName

    The CodeBlock main USS class name.

    Declaration
    public const string ussClassName = "appui-code-block"
    Field Value
    Type Description
    string

    viewportUssClassName

    The USS class applied to the row inside the scroll content (line numbers + body).

    Declaration
    public const string viewportUssClassName = "appui-code-block__viewport"
    Field Value
    Type Description
    string

    withLineNumbersUssClassName

    The USS class toggled when showLineNumbers is enabled.

    Declaration
    public const string withLineNumbersUssClassName = "appui-code-block--with-line-numbers"
    Field Value
    Type Description
    string

    Properties

    code

    The source code displayed in the body. Setting this triggers a re-render (with syntax highlighting if a grammar+theme pair is configured via USS).

    Declaration
    public string code { get; set; }
    Property Value
    Type Description
    string

    contentContainer

    Children are managed internally — this element exposes no content container.

    Declaration
    public override VisualElement contentContainer { get; }
    Property Value
    Type Description
    VisualElement
    Overrides
    VisualElement.contentContainer

    language

    The language identifier shown in the header (e.g. "csharp", "lua"). When null or empty the label is hidden but the copy button stays available. Setting this also adds a appui-code-block--lang-<value> class so USS can map the language to a grammar via --codeblock-grammar.

    Declaration
    public string language { get; set; }
    Property Value
    Type Description
    string

    showLineNumbers

    When true, a left-side gutter shows 1-based line numbers next to the source. The gutter and the body live inside the same ScrollView, so vertical (and horizontal) scrolling keeps them aligned. Disabled by default.

    Declaration
    public bool showLineNumbers { get; set; }
    Property Value
    Type Description
    bool

    Implements

    IEventHandler
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IResolvedStyle
    IContextOverrideElement
    IAdditionalDataHolder

    Extension Methods

    VisualElementExtensions.FindNavController(VisualElement)
    RegisterUpdateCallbackExtensions.RegisterUpdateCallback(VisualElement, EventCallback<UpdateEvent>)
    RegisterUpdateCallbackExtensions.UnregisterUpdateCallback(VisualElement, EventCallback<UpdateEvent>)
    VisualElementExtensions.EnableDynamicTransform(VisualElement, bool)
    VisualElementExtensions.EnablePicking(VisualElement, bool)
    VisualElementExtensions.GetChildren<T>(VisualElement, bool)
    VisualElementExtensions.GetContextProvider<T>(VisualElement)
    VisualElementExtensions.GetContextProvider<T>(VisualElement, string)
    VisualElementExtensions.GetContext<T>(VisualElement)
    VisualElementExtensions.GetContext<T>(VisualElement, string)
    VisualElementExtensions.GetExclusiveRootElement(VisualElement)
    VisualElementExtensions.GetLastAncestorOfType<T>(VisualElement)
    VisualElementExtensions.GetPreferredTooltipPlacement(VisualElement)
    VisualElementExtensions.GetSelfContext<T>(VisualElement)
    VisualElementExtensions.GetSelfContext<T>(VisualElement, string)
    VisualElementExtensions.GetTooltipContent(VisualElement)
    VisualElementExtensions.GetTooltipTemplate(VisualElement)
    VisualElementExtensions.HasAncestorOfType<T>(VisualElement, bool)
    VisualElementExtensions.HasAncestorsOfType<T>(VisualElement)
    VisualElementExtensions.IsContextProvider<T>(VisualElement)
    VisualElementExtensions.IsContextProvider<T>(VisualElement, string)
    VisualElementExtensions.IsInvisible(VisualElement)
    VisualElementExtensions.IsOnScreen(VisualElement)
    VisualElementExtensions.ProvideContext<T>(VisualElement, string, T)
    VisualElementExtensions.ProvideContext<T>(VisualElement, T)
    VisualElementExtensions.RegisterContextChangedCallback<T>(VisualElement, string, EventCallback<ContextChangedEvent<T>>)
    VisualElementExtensions.RegisterContextChangedCallback<T>(VisualElement, EventCallback<ContextChangedEvent<T>>)
    VisualElementExtensions.SetPreferredTooltipPlacement(VisualElement, OptionalEnum<PopoverPlacement>)
    VisualElementExtensions.SetTooltipContent(VisualElement, VisualElementExtensions.TooltipContentCallback)
    VisualElementExtensions.SetTooltipTemplate(VisualElement, VisualElement)
    VisualElementExtensions.UnregisterContextChangedCallback<T>(VisualElement, string, EventCallback<ContextChangedEvent<T>>)
    VisualElementExtensions.UnregisterContextChangedCallback<T>(VisualElement, EventCallback<ContextChangedEvent<T>>)
    In This Article
    Back to top
    Copyright © 2026 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)