Warnings and Common Issues - rmfandyplayz/UnityUIAnimationTools GitHub Wiki
The Inspector checks every step against what it will actually animate, so a broken step shows up while you're making it, not later in the game. A step that won't do anything gets a ⚠ at the end of its header, its header fades, and a warning appears under its target.
| Warning | Means | Fix |
|---|---|---|
'Box' has no Canvas Group (or Graphic, RectTransform, UI Material Instance) |
The step type needs a component the target doesn't have | Add the component, or point the step at a different object |
Target Path "Iconn" matches nothing |
A typo, or the object was renamed or moved | Fix the path. See Targets |
Shader 'UI/Default' has no property '_Nope' |
The material's shader has no property with that name | Check the name in the shader, underscore included |
No Clip |
A Play Sound step with no sound | Pick a clip |
No Property picked |
A Custom Property step still on None | Pick a property |
'Score' has no TextMeshProUGUI |
A Custom Property step's component isn't on the target | Point it at the right object, or pick the property again |
TextMeshProUGUI.text is a string, but this step was set up for a float |
The property changed type in code since it was picked | Pick it again |
Everything below the warning is greyed out until it's fixed, since those fields only matter once the step can work. The fields that fix it stay editable.
In the game, a broken step is skipped with one warning in the Console, when the player starts. It never throws errors every frame, and it never animates some other object instead.
In an Animation Set, most checks need a real object, so set Preview On first. Under a player's Shared Animations, the set's steps are checked against that player.
Under the hood
- The check follows playback's own rules exactly: the slot, then the Target Path (
..included), then the player's own object. - A sound whose Target Path misses is warned about but not greyed out, since it still plays, on the shared audio source.
- Console warnings all read "who: WHAT WENT WRONG. details", naming the player, the animation and the step. Click one to find the object.
Unity's + button fills a new list entry with zeros rather than the tool's defaults. The tool patches this straight away, filling in anything still at zero, and never touching a value you've set. Two consequences:
-
Loops
0is treated as1. Loops means "how many times":1= once,2= twice,-1= forever. -
A Duration of
0is bumped to0.25. For something effectively instant, use0.01, or aSet Activestep.
A step using Current, or with no From, carries on from wherever the value is. Use To: Baseline to land on the same place every time. See From and To.
A delayed step with a From only jumps to its From when its turn comes if Apply From Values Immediately is off. Turn it back on. See From and To.
Two steps changing the same thing on the same object at the same time overwrite each other: two Scale steps, or a Punch Scale during a Scale. Resizing has a subtler version: don't mix whole-box and edge steps.
A Layout Group positions and sizes its children itself, and will fight position and size steps on them. Animate a child inside each item instead, or use scale, rotation and fades, which layout groups leave alone.
A stencil Mask above the element stops material animations from showing. Use RectMask2D. See Material and Shader Properties.
On Complete only runs when an animation finishes on its own. Being interrupted, stopped, or having its object turned off doesn't count. (Being interrupted by an animation set to COMPLETE REPORT does.) From code, use the onEnd version of Play to hear about every ending. See Code API.
Each player copies its set when it starts. Changes made after that reach it next time you enter play mode. See Animation Sets.
It had no From, so the mirror had to guess its end. See Mirroring.
Unity turns an object off before destroying it, and there's no way to tell in advance. See Code API.
IL2CPP builds with Managed Stripping above Minimal can remove a property's setter if nothing but this tool uses it. Preserve it with a link.xml. See Custom Property.
If objects lost their UI Animation Player or Animation Sets lost their script, check for two copies of the tool: an old folder in Assets/ beside the package. Delete the folder. If you copied the folder by hand, its .meta files didn't come along, or came from a different copy of the tool. Script GUIDs have to match. See Installation.
Errors like 'RectTransform' does not contain a definition for 'DOAnchorPos' mean DOTween's Setup DOTween… or Create ASMDEF hasn't been clicked in this project. See Installation.
Enum values are written out as explicit numbers, and those numbers are the contract. Unity saves an enum as its number, not its name. Reordering the lines in UIAnimationStepType is safe, but changing a number, or reusing an old one, silently turns every step already saved with it into a different type, with no error. New step types take the next free number.
This happened once: alphabetising the enum while its numbers were still implicit turned 16 Scale steps into Graphic Alpha steps and faded a menu to invisible. If animations suddenly "change type" or vanish, check the enum's history before blaming the asset. The fix is to remap the stored numbers, never to reorder the enum back.
Change the code in the tool's repo, not inside a project. A project gets a read-only copy from GitHub, and Unity puts it back whenever it reinstalls. Every new file and folder needs its .meta committed too: Unity ignores anything in a package that has no .meta, with no error.