Logo

New in v2

Explore the new graphics, animation, components, and API changes

Overview

Evo UI v2 brings a new graphic renderer, a shared animation workflow, and more tools for building interactive interfaces. The biggest addition is Procedural Shape, which replaces Procedural Rect and now powers the supplied UI elements.

Direct upgrade from v1 to v2 is not supported. Read Upgrading from v1 before starting.

Highlights

New UI renderer

Procedural Shape draws rectangles, ellipses, polygons, stars, and hearts. Combine fills, gradients, dashed outlines, shadows, clipping, and backdrop blur, then share the appearance through Styler.

Better animation workflow

Evo Tween now handles component animations. Edit sequences and presets with its Timeline tools, or use Tween Animator for your own UI motion. It replaces the old UI Animator component.

Cleaner editor UI

The whole editor backend has been refactored for a smoother workflow. It is now cleaner and faster, and includes new controls, while integrating with Unity better.

More capable controls and lists

Scroll Rect adds smooth input, infinite scrolling, and virtualization; Reorderable List can transfer items between lists.

New effects and selection tools

Add Backdrop Blur, Border Glow, Curved Canvas, Ink Panel, Pixel Curtain, Topographic Skin, or Text Effects. Marquee Selection handles box selection and group dragging; Virtual Cursor provides a new cursor workflow.

Shared styling with fewer manual edits

Styler supports shape styles, per-color alpha overrides, and transitions when applying presets. The browser adds an ID Migrator so renaming a theme entry can update its users too.

Text providers

Evo UI components, Styler, and the Create menu now work with TextMesh Pro or UniText. Choose the provider in Project Settings -> Evo UI and convert existing text without losing references.


New Components

New Features

  • Added UniText integration
  • Added Border Glow integration to Interactive
  • Added Invert Mask option to Soft Mask
  • Added Procedural Shape mapping to Styler Preset
  • Added Rolling Animation to Counter
  • Added Curve Mode option to Line Chart
  • Added Show Fill option to Line Chart
  • Added Label Rotation option to Cartesian Charts
  • Added Slice Spacing option to Pie Chart
  • Added public properties for chart settings such as spacing, corner radius, line thickness and point size
  • Added List Transfer option to Reorderable List
  • Added Smooth Scroll option to Scroll Rect
  • Added Infinite Scroll option to Scroll Rect
  • Added Virtualization option to Scroll Rect
  • Added Graphic rendering options to Ripple
  • Added Graphic rendering options to Spotlight
  • Added state-based custom cursor support to Interactive
  • Added transition support for Styler preset applications
  • Added Keep On Global Apply option to Styler Preset; objects on the preset keep it during theme switches
  • Added Backdrop Blur fill option to Procedural Shape
  • Added ID Migrator tool to Styler Browser window
  • Added Invert Fill option to Progress Bar
  • Added Invert Fill option to Timer
  • Added Neighbor Opacity and Visible Neighbors options to Carousel
  • Added Duration Bar option to Notification; a Procedural Shape bar that shows the remaining auto close time
  • Added additional shapes, dashed outlines, and Styler-driven colors to Procedural Shape
  • Added Dither option to Procedural Shape; faint noise that hides banding in large soft shadows and gradients
  • Added local system-clock display support to Timer
  • Added automatic value ranges and additional label controls to Cartesian charts
  • Added smooth animations to Calendar
  • Added text provider support.
  • Added Convert Existing Text tool to Project Settings -> Evo UI
  • Added UI Catalog window to browse, search, and create UI elements with rendered previews
  • Added Pick Visible UI in Scene View toggle to the Tools menu.
  • Reorganized the Create menu into categories that match the UI Catalog
  • Added a new demo scene
  • Added 51 new icons

Improvements

  • New graphic renderer: The whole package now use Procedural Shape for consistent visuals at any scale and more customization options.
  • New animation system: Component animations are now handled through Evo Tween. The new system is completely modular, supports presets, and includes a Timeline editor window.
  • Editor: EditorGUI backend has been refactored for a smoother workflow. It is now cleaner and faster, and includes new controls such as reorderable lists.
  • Button content and layout management can work in a hybrid manner; the component fields will adapt to external changes. Custom Content option has been removed in result of this.
  • Context Menu improvements:
    • Recursive submenu support.
    • The item list uses a custom editor GUI.
  • Dropdown improvements:
    • Item recycling and virtualization support.
    • Item navigation is much smoother.
    • The item list uses a custom editor GUI.
  • Flexible Grid Layout is out of preview. Improved alignment, workflow, optimization, and editor UX.
  • List View improvements:
    • It is out of preview and ready for production.
    • Cells are non-destructive.
    • Graphic rendering upgraded to Procedural Shape.
    • The row and column lists use a custom editor GUI.
  • Soft Mask improvements:
    • It is out of preview and ready for production.
    • Added nested masking and support for more shaders.
  • Styler Object supports an alpha override for each color ID.
  • Components with a Style Provider can follow the default Styler Preset with Use Default Preset.
  • Menu Bar improvements:
    • Items can be generated dynamically, including in Edit Mode.
    • The item list uses a custom editor GUI.
  • Radar Chart graphics are smoother.
  • Line Chart graphics are smoother.
  • Calendar supports live edits and caches its entries before runtime.
  • Color Picker trigger calls are optimized.
  • Timer offers rolling digit animation.
  • SmoothTMPGradient uses callbacks instead of LateUpdate and processes text data more efficiently.
  • Styler Browser offers multiple tools and an updated editor layout.
  • Scrollbar auto-hide checking is now based on a threshold.
  • Off Screen Indicator detects 3D and 2D targets automatically.
  • Showcase Panel items can be generated dynamically, including in Edit Mode.
  • Selector indicators can be generated dynamically, including in Edit Mode.
  • Popover has been revamped from the ground up and the animation system has been changed.
  • Input Field Enhancer animations are combined; all of them can be used at the same time.
  • Spinner can work with Procedural Shape. It also has a new Ease field.
  • Carousel items can be generated dynamically, including in Edit Mode.
  • Evo Localization integration UX improvements.
  • Icon Browser supports more component types and lets you preview icons without selecting an object.
  • Tooltip reuses closed tooltips instead of creating a new one for each hover.
  • Reduced GC allocs.

API changes

  • UI Animator component has been removed. Use the more powerful and modular Tween Animator instead.
  • Countdown has been removed. Countdown functionality is now part of Timer.
  • ProceduralRect has been renamed to ProceduralShape. The component was previously in preview, and is now capable of producing more shapes, hence the name change.
  • ContextMenu.Item.ItemType.Section has been renamed to ContextMenu.Item.ItemType.Submenu.
  • ContextMenu.Item.GetButton() is obsolete but remains available. Use GeneratedObject.GetComponent<T>() to get a specific component.
  • ContextMenu.IsVisible() is now the IsVisible property.
  • Button content and layout setters (e.g. SetText()) are obsolete. Use properties, such as button.Text = "Hi!"; to update the content.
  • ModalWindow content setters (e.g. SetTitle()) are obsolete. Use properties, such as modal.Title = "Hi!"; to update the content.
  • Interactive CanvasGroup state transitions have been removed. Use StylerObject color and alpha transitions to change visibility based on the interaction state.
  • MenuBar.BarItem class has been renamed to MenuBar.Item.
  • MenuBar.Item runtime variables such as generatedButton and generatedMenu have been replaced with properties (GeneratedButton, GeneratedMenu).
  • RectDepth has been renamed to RectParallax.
  • StrokeDash base class has changed to MaskableGraphic, so it does not require an external component such as Image anymore.
  • WarningStripe base class has changed to Image, so it does not require an external component anymore.
  • Ripple now targets a Graphic and the workflow has been refactored significantly. V1 settings require migration; review the Graphic target and effect settings.
  • PointerTrail has been renamed to Spotlight.
  • Spotlight now targets a Graphic and the workflow has been refactored significantly. V1 settings require migration.
  • BlurOverlay and BlurOverlayManager have been removed. Use BackdropBlur instead.
  • Tabs component has been renamed to TabManager.
  • Pages component has been renamed to PageManager.
  • Switch.onSwitchOff and Switch.onSwitchOn are removed. Use the dynamic onValueChanged event for new bindings.
  • Invoke At Start options have been removed to simplify the Inspector. If you relied on this behavior, invoke the relevant events from your initialization code.
  • ProgressBar.isVertical has been removed. Fill rendering now supports Procedural Shape, so this direction flag is no longer needed.
  • Timer.isVertical has been removed. Fill rendering now supports Procedural Shape, so this direction flag is no longer needed.
  • StylingSource has been replaced with StyleProvider. V1 used None = 0, Custom = 1, and StylerPreset = 2; v2 uses Custom = 0 and Styler = 1. The old sfxSource and stylingSource fields have also been replaced by styleProvider. The migration tool remaps these values in your assets and scripts; review numeric casts and values set at runtime in your own code. ListViewStyle.StylingSource is also replaced by StyleProvider.
  • SelectionBox and SelectionBoxOverride have been removed. Use VirtualCursor and VirtualCursorOverride for the new workflow; their settings are not direct replacements.
  • TabNavigation and UINavigationFallback have been merged into UINavigationContainer. Their settings, along with TabbableElement and ExcludeFromTabOrder, require manual migration.
  • Several public fields on Button, ModalWindow, Tooltip, and ProceduralShape are now private serialized fields. Their stored values retain the same field names, but scripts must use the public properties, such as Text, Title, Sprite, and CornerRadius.
  • Dropdown.selectedIndex and Selector.selectedIndex are now private; use SelectedIndex or the selection methods. Carousel.currentIndex and ShowcasePanel.currentIndex are also private; use CurrentIndex and the corresponding navigation methods.
  • Tooltip.IsVisible() is now the IsVisible property. Its old setter methods remain available as obsolete wrappers for Icon, Title, and Description.
  • ProceduralShape.SetSprite() and both SetCornerRadius() overloads remain available as obsolete wrappers for the new properties. RectSway.SetSwayState(), Slider.FormatValue(), and OffScreenIndicatorObject.SetVisibilityAlpha()/GetVisibilityAlpha() also forward to their replacements.
  • The obsolete v1 aliases on Notification and StylerObject remain available. ContextMenu.Item.itemName, itemType, customPrefab, and generatedObject, plus MenuBar.Item.generatedButton and generatedMenu, are retained as obsolete properties.
  • ContextMenuSection has been renamed to ContextMenuSubmenu. ContextMenu.Item.sectionItems and ContextMenu.SectionItem have been replaced by recursive subItems using ContextMenu.Item with managed-reference serialization. The migration tool converts the old submenu data and GetSectionItem() calls.
  • ContextMenuPreset.CollapseAllSections() is obsolete and forwards to CollapseAllSubmenus(). The old submenu setup and animation signatures have been removed.
  • The tab entry class Evo.UI.Item is now TabManager.Tab. defaultTabIndex and defaultPageIndex map to the serialized current-index fields; use CurrentTabIndex and CurrentPageIndex to read the active selection.
  • The old built-in animation enums, curves, durations, and offsets on ContextMenu, Dropdown, MenuBar, ModalWindow, Notification, Popover, Tooltip, and TabManager have been replaced or moved into Evo Tween sequences. The migration tool converts the previous animation data into equivalent sequences. Dropdown arrow rotation settings are removed and need to be recreated manually.
  • Popover.onShow and onHide are obsolete. Use onStateChanged(bool) for new bindings.
  • DropdownMultiSelect now inherits from Dropdown and uses its shared item and configuration types. Review custom subclasses and code that depends on the old standalone implementation.
  • Interactive ripple, pointer-light, sound, and cursor settings have been reorganized. Ripple and spotlight options now use settings objects, and the old CursorType, cursorTexture, and cursorHotspot workflow is replaced by CursorStates and per-state CursorSettings.
  • Counter.DisplayFormat, ProgressBar.DisplayFormat, and Slider.DisplayFormat have been consolidated into NumberDisplayFormat, also used by RadialSlider. Their numeric values are unchanged, but C# references to the old enum types must be updated.
  • ProgressBar.ProgressBarEvent, RadialSlider.RadialSliderEvent, and InputFieldEnhancer.SubmitEvent have been replaced by UnityEvent<float> or UnityEvent<string> with the same event payloads.
  • ProgressBar.SetValue() is obsolete; use Value. Timer.isRunning and isCompleted are now read-only public properties, IsRunning and IsCompleted; control the timer through its start, pause, and reset methods.
  • RadialSlider.allowContinuousDrag now maps to continuousDrag and remains available as an obsolete property. The old public LineChart.horizontalGridLines, ContextMenuPreset.sectionPrefab, and ContextMenuSubmenu.sectionButton names also have compatibility properties.
  • Chart components now share ChartBase and common data-point base classes. Bar and line chart grid-division fields map to scaleDivisions; old padding, sprite-based visuals, and label-layout settings need review.
  • PieChart.innerRadius and SetInnerRadius() used pixels. Their replacements, innerRadiusRatio and SetInnerRadiusRatio(), use a fraction of the outer radius. Anti-aliasing controls have also changed to edgeSmoothing; these values need manual conversion.
  • LineChart.pointSprite and SetPointSprite() have been removed. Chart markers, bars, and label backgrounds now use the new rendering workflow.
  • RadialSlider.fillImage, ProgressButton.progressFill, and ColorPicker.colorPreview now reference ProceduralShape instead of Image. Existing Image references and Progress Button fill-method settings require migration.
  • ListViewCellButton has been replaced by ListViewCell. Use ListView.onCellClicked for cell interaction. Sprite and pixels-per-unit settings in ListViewStyle have been replaced by shape settings.
  • RadialLayoutGroup.radiusScale/RadiusScale and centerOffset/CenterOffset have been removed.
  • TextEffects now exposes effect settings through properties and processes effect tags through TMP's text preprocessor. The old RainbowFX, EffectType, glitch-alphabet settings, and typewriter pitch variation have been removed. Pulse amount and shimmer width use revised settings, so those effects need review. The single-argument SetText() entry point remains available for existing callbacks.
  • InputFieldEnhancer.PlaceholderAnimation has been removed. Slide, scale, and fade settings now work together. Its old refresh and animation entry points remain available as obsolete methods.
  • Text, input field, and font references now use provider-neutral types, so they work with every text provider. Text components are Graphic (e.g. Button.textObject, Counter.textObject, ProgressBar.valueText, Slider.valueText, Timer.valueText, StylerObject.targetText), input fields are MonoBehaviour (InputFieldEnhancer.source, Slider.valueInput, ColorPicker.hexInput), and fonts are Object (FontMapping.font, ListViewStyle.headerFont, ListViewStyle.rowFont). Use component properties or TextProvider to read and write them, or cast them to the TextMesh Pro type. The migration tool adds these casts where your scripts need the TextMesh Pro API.
  • StylerObject.ObjectType.TMPText has been renamed to StylerObject.ObjectType.Text. Its serialized value is unchanged, but C# references must be updated.
  • StylerObject.presetSource has been replaced by useDefaultStylerPreset (bool). Saved values carry over, and presetSource remains available as an obsolete property.
  • Styler.GetFont(provider, mapping, preset) is obsolete. Use the overload with a TextBackend, which returns that provider's font as Object. StylerPreset.GetFont() and TryGetFont() also accept a TextBackend; their overloads without one still return the TextMesh Pro font.
  • Styler.RegisteredObjects has been replaced by RegisteredHandlers, which stores IStylerHandler implementations. ApplyPreset() now updates registered handlers and can persist the runtime selection through PersistentPreset; use ApplyPresetTo() for specific targets, including inactive children. The old cache, default-preset, and registered-object helper methods remain available as obsolete wrappers.
  • IconLibrary has moved from Evo.UI in the runtime assembly to Evo.UI.Editor in the editor assembly.
  • Some optional arguments and parameter names have changed. Update named-argument calls and method-group bindings to match the v2 signatures where no compatibility overload exists.

Dependencies

  • Evo Tween is required for animations (shipped with the package).
  • Support for the old Input Manager has been removed.
  • Minimum supported version is now Unity 6.0 (previously 2022.3).

For later v2 patches, see Release Notes. The original documentation remains available in the v1 archive.


On this page