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.
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
- Added Curved Canvas component (Effect)
- Added Ink Panel component (Effect)
- Added Dot Matrix Loader component (Effect)
- Added Pixel Curtain component (Effect)
- Added Topographic Skin component (Effect)
- Added Border Glow component (Effect)
- Added Backdrop Blur component (Effect)
- Added Text Effects (TMP) component (Effect)
- Added
Palette Color Pickercomponent (UI Element) - Added Comparison Slider component (UI Element)
- Added Range Slider component (UI Element)
- Added Distribution Bar component (UI Element)
- Added Virtual Cursor component (UI Element)
- Added Marquee Selection component (Layout)
- Added Stepper component (Layout)
- Added Raycast Area component; a UI hit target that does not render geometry
New Features
- Added UniText integration
- Added Border Glow integration to Interactive
- Added
Invert Maskoption to Soft Mask - Added Procedural Shape mapping to Styler Preset
- Added
Rolling Animationto Counter - Added
Curve Modeoption to Line Chart - Added
Show Filloption to Line Chart - Added
Label Rotationoption toCartesian Charts - Added
Slice Spacingoption to Pie Chart - Added public properties for chart settings such as spacing, corner radius, line thickness and point size
- Added
List Transferoption to Reorderable List - Added
Smooth Scrolloption to Scroll Rect - Added
Infinite Scrolloption to Scroll Rect - Added
Virtualizationoption to Scroll Rect - Added
Graphicrendering options to Ripple - Added
Graphicrendering options to Spotlight - Added state-based custom cursor support to Interactive
- Added transition support for Styler preset applications
- Added
Keep On Global Applyoption to Styler Preset; objects on the preset keep it during theme switches - Added Backdrop Blur fill option to Procedural Shape
- Added
ID Migratortool to Styler Browser window - Added
Invert Filloption to Progress Bar - Added
Invert Filloption to Timer - Added
Neighbor OpacityandVisible Neighborsoptions to Carousel - Added
Duration Baroption 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
Ditheroption 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 Texttool 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 Viewtoggle 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:
EditorGUIbackend 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 Contentoption 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
LateUpdateand 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
Easefield. - 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 Animatorcomponent has been removed. Use the more powerful and modular Tween Animator instead.Countdownhas been removed. Countdown functionality is now part of Timer.ProceduralRecthas been renamed toProceduralShape. The component was previously in preview, and is now capable of producing more shapes, hence the name change.ContextMenu.Item.ItemType.Sectionhas been renamed toContextMenu.Item.ItemType.Submenu.ContextMenu.Item.GetButton()is obsolete but remains available. UseGeneratedObject.GetComponent<T>()to get a specific component.ContextMenu.IsVisible()is now theIsVisibleproperty.- Button content and layout setters (e.g.
SetText()) are obsolete. Use properties, such asbutton.Text = "Hi!";to update the content. ModalWindowcontent setters (e.g.SetTitle()) are obsolete. Use properties, such asmodal.Title = "Hi!";to update the content.- Interactive CanvasGroup state transitions have been removed. Use
StylerObjectcolor and alpha transitions to change visibility based on the interaction state. MenuBar.BarItemclass has been renamed toMenuBar.Item.MenuBar.Itemruntime variables such asgeneratedButtonandgeneratedMenuhave been replaced with properties (GeneratedButton,GeneratedMenu).RectDepthhas been renamed toRectParallax.StrokeDashbase class has changed toMaskableGraphic, so it does not require an external component such asImageanymore.WarningStripebase class has changed toImage, so it does not require an external component anymore.- Ripple now targets a
Graphicand the workflow has been refactored significantly. V1 settings require migration; review the Graphic target and effect settings. PointerTrailhas been renamed to Spotlight.- Spotlight now targets a
Graphicand the workflow has been refactored significantly. V1 settings require migration. BlurOverlayandBlurOverlayManagerhave been removed. UseBackdropBlurinstead.Tabscomponent has been renamed toTabManager.Pagescomponent has been renamed toPageManager.Switch.onSwitchOffandSwitch.onSwitchOnare removed. Use the dynamiconValueChangedevent for new bindings.Invoke At Startoptions have been removed to simplify the Inspector. If you relied on this behavior, invoke the relevant events from your initialization code.ProgressBar.isVerticalhas been removed. Fill rendering now supports Procedural Shape, so this direction flag is no longer needed.Timer.isVerticalhas been removed. Fill rendering now supports Procedural Shape, so this direction flag is no longer needed.StylingSourcehas been replaced withStyleProvider. V1 usedNone = 0,Custom = 1, andStylerPreset = 2; v2 usesCustom = 0andStyler = 1. The oldsfxSourceandstylingSourcefields have also been replaced bystyleProvider. The migration tool remaps these values in your assets and scripts; review numeric casts and values set at runtime in your own code.ListViewStyle.StylingSourceis also replaced byStyleProvider.SelectionBoxandSelectionBoxOverridehave been removed. UseVirtualCursorandVirtualCursorOverridefor the new workflow; their settings are not direct replacements.TabNavigationandUINavigationFallbackhave been merged intoUINavigationContainer. Their settings, along withTabbableElementandExcludeFromTabOrder, require manual migration.- Several public fields on Button,
ModalWindow, Tooltip, andProceduralShapeare now private serialized fields. Their stored values retain the same field names, but scripts must use the public properties, such asText,Title,Sprite, andCornerRadius. Dropdown.selectedIndexandSelector.selectedIndexare now private; useSelectedIndexor the selection methods.Carousel.currentIndexandShowcasePanel.currentIndexare also private; useCurrentIndexand the corresponding navigation methods.Tooltip.IsVisible()is now theIsVisibleproperty. Its old setter methods remain available as obsolete wrappers forIcon,Title, andDescription.ProceduralShape.SetSprite()and bothSetCornerRadius()overloads remain available as obsolete wrappers for the new properties.RectSway.SetSwayState(),Slider.FormatValue(), andOffScreenIndicatorObject.SetVisibilityAlpha()/GetVisibilityAlpha()also forward to their replacements.- The obsolete v1 aliases on Notification and
StylerObjectremain available.ContextMenu.Item.itemName,itemType,customPrefab, andgeneratedObject, plusMenuBar.Item.generatedButtonandgeneratedMenu, are retained as obsolete properties. ContextMenuSectionhas been renamed toContextMenuSubmenu.ContextMenu.Item.sectionItemsandContextMenu.SectionItemhave been replaced by recursivesubItemsusingContextMenu.Itemwith managed-reference serialization. The migration tool converts the old submenu data andGetSectionItem()calls.ContextMenuPreset.CollapseAllSections()is obsolete and forwards toCollapseAllSubmenus(). The old submenu setup and animation signatures have been removed.- The tab entry class
Evo.UI.Itemis nowTabManager.Tab.defaultTabIndexanddefaultPageIndexmap to the serialized current-index fields; useCurrentTabIndexandCurrentPageIndexto read the active selection. - The old built-in animation enums, curves, durations, and offsets on
ContextMenu, Dropdown,MenuBar,ModalWindow, Notification, Popover, Tooltip, andTabManagerhave 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.onShowandonHideare obsolete. UseonStateChanged(bool)for new bindings.DropdownMultiSelectnow 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, andcursorHotspotworkflow is replaced byCursorStatesand per-stateCursorSettings. Counter.DisplayFormat,ProgressBar.DisplayFormat, andSlider.DisplayFormathave been consolidated intoNumberDisplayFormat, also used byRadialSlider. Their numeric values are unchanged, but C# references to the old enum types must be updated.ProgressBar.ProgressBarEvent,RadialSlider.RadialSliderEvent, andInputFieldEnhancer.SubmitEventhave been replaced byUnityEvent<float>orUnityEvent<string>with the same event payloads.ProgressBar.SetValue()is obsolete; useValue.Timer.isRunningandisCompletedare now read-only public properties,IsRunningandIsCompleted; control the timer through its start, pause, and reset methods.RadialSlider.allowContinuousDragnow maps tocontinuousDragand remains available as an obsolete property. The old publicLineChart.horizontalGridLines,ContextMenuPreset.sectionPrefab, andContextMenuSubmenu.sectionButtonnames also have compatibility properties.- Chart components now share
ChartBaseand common data-point base classes. Bar and line chart grid-division fields map toscaleDivisions; old padding, sprite-based visuals, and label-layout settings need review. PieChart.innerRadiusandSetInnerRadius()used pixels. Their replacements,innerRadiusRatioandSetInnerRadiusRatio(), use a fraction of the outer radius. Anti-aliasing controls have also changed toedgeSmoothing; these values need manual conversion.LineChart.pointSpriteandSetPointSprite()have been removed. Chart markers, bars, and label backgrounds now use the new rendering workflow.RadialSlider.fillImage,ProgressButton.progressFill, andColorPicker.colorPreviewnow referenceProceduralShapeinstead ofImage. Existing Image references and Progress Button fill-method settings require migration.ListViewCellButtonhas been replaced byListViewCell. UseListView.onCellClickedfor cell interaction. Sprite and pixels-per-unit settings inListViewStylehave been replaced by shape settings.RadialLayoutGroup.radiusScale/RadiusScaleandcenterOffset/CenterOffsethave been removed.TextEffectsnow exposes effect settings through properties and processes effect tags through TMP's text preprocessor. The oldRainbowFX,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-argumentSetText()entry point remains available for existing callbacks.InputFieldEnhancer.PlaceholderAnimationhas 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 areMonoBehaviour(InputFieldEnhancer.source,Slider.valueInput,ColorPicker.hexInput), and fonts areObject(FontMapping.font,ListViewStyle.headerFont,ListViewStyle.rowFont). Use component properties orTextProviderto 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.TMPTexthas been renamed toStylerObject.ObjectType.Text. Its serialized value is unchanged, but C# references must be updated.StylerObject.presetSourcehas been replaced byuseDefaultStylerPreset(bool). Saved values carry over, andpresetSourceremains available as an obsolete property.Styler.GetFont(provider, mapping, preset)is obsolete. Use the overload with aTextBackend, which returns that provider's font asObject.StylerPreset.GetFont()andTryGetFont()also accept aTextBackend; their overloads without one still return the TextMesh Pro font.Styler.RegisteredObjectshas been replaced byRegisteredHandlers, which stores IStylerHandler implementations.ApplyPreset()now updates registered handlers and can persist the runtime selection throughPersistentPreset; useApplyPresetTo()for specific targets, including inactive children. The old cache, default-preset, and registered-object helper methods remain available as obsolete wrappers.IconLibraryhas moved fromEvo.UIin the runtime assembly toEvo.UI.Editorin 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.