â ī¸Known Issues
Potential problems and how to solve them
Timeflow scripts not supported in asset bundles or Udon
Timeflow cannot be used with 3rd party SDKs or systems which rely on asset bundles or only support a subset of C#, such as VRChat. This is a known and long-standing limitation. Scripts are not considered assets and cannot be distributed in downloadable app content for a number of reasons.
There is no work-around for 3rd party SDKs and you will have to adhere to their guidelines as to which features in Unity and C# are supported.
Solution: If you are building your own app or game with downloadable content, then Timeflow can be used if (and only if) the base application is built with support for Timeflow.
This means that the host application is built with the Timeflow package included. You can then create scenes and prefabs that include Timeflow animations and deliver them in asset bundles.
Editor windows may slow down runtime performance
When working in the Unity editor, the current display of the Timeflow view and the Inspector can cause degraded performance affecting the frame rate during playback if there are a lot of objects displayed or complex graphs. This is due to the overhead of UI drawing.
Solution: Clear the Timeflow view or deselect all objects and collapse the Timeflow view (using the minimize button in the upper right corner of the window). Any other windows you can collapse, hide, or simplify may also improve playback. Use the Stats overlay in the game view to get an idea of how each window affects performance.
Note also that objects selected and displayed in the Inspector view can also sometimes affect playback performance, so deselect all objects to minimize overhead.
Assertion failed on expression: 'ShouldRunBehaviour()'
If this error occurs it typically means that a function is invoked on a script object that is not currently running. This only happens in the Unity Editor.
Solution: Add [ExecuteInEditMode()] at the top of the script causing the error. Additional scripting may be needed to properly function in edit mode, depending on what the script does. For a basic example, see the EventTriggerTest example. As a general rule, all scripts used with Timeflow should have some implementation of ExecuteInEditMode to perform in edit mode the same as play mode as much as possible. There are of course limitations such as when working with physics or simulations where this may not be possible.
Stuttering, Jittering, or Shaking Movement
If you notice that animation isn't playing smoothly, this may be caused by a few things.
Solution #1: Check the Update Settings to make sure that the behavior in question is updating after any other behaviors it depends on. Try using Update After or Late Update to see if that resolves the issue.
Solution #2: If using physics, makes sure updates are using Fixed Update. Solution #3: Check the world space and coordinates in use. Using large coordinates in Unity can result in shakiness in some cases.
Skipping Playback (on some Android devices)
Android devices can vary greatly in their hardware and features. It has been discovered on some older devices that the audio system does not accurately report timing information used for synchronizing animation. This can result in choppy stuttering playback of animation, even though the audio may playback smoothly.
Solution: Disable audio sync, or disallow affected devices. Since there is no way to solve this problem directly, you must either disable the audio synchronization in the Timeflow settings (uncheck the Sync box next to the audio), or discontinue support for the devices that can't playback smoothly. If you choose to disable sync, note that this may cause the animation to drift off time from the audio.
Post Processing Volume Parameters Not Listed
Whether using HDRP or URP, Volume component parameters for post processing effects may be animated using any behavior. When the project is properly configured, the properties for each effect are listed in the property selection menu. However, if the configuration is missing then only the basic Volume parameters are displayed.
Solution: Add the scripting define symbol USING_URP or USING_HDRP in Player Settings. Please see the Render Pipeline documentation for further information.
Subscenes and ECS not supported
Timeflow does not implement the Data-Oriented Technology Stack (DOTS) and is not compatible with the Entity Component System (ECS). Therefore, Timeflow nor any of its behaviors may be used in Subscenes. However, you may still use Timeflow normally and incorporate subscenes into your project as needed for other elements. The primary reasons ECS is not supported and may never be is due to the complexity of dependencies and managed shared objects in Timeflow, which cannot be streamlined into ECS structures in an efficient way.
Since ECS is only operational at runtime, implementing it into Timeflow would provide no creative advantages during editing and would likely introduce differences in behavior at runtime since the ECS implementation is entirely separate and has different operating rules to abide by. The ECS workflow is also geared for high volume output often using procedural generation, whereas Timeflow is designed to animate a specific set of objects created by the user in edit mode.
Solution: Depending on your needs it may be possible to use Unity animation systems or 3rd party tools with a hybridized workflow to implement ECS animation. A subset of Timeflow animation tools for ECS may be considered in the future if there is a strong use case for it.
The type or namespace name 'MidiJack' could not be found (are you missing a using directive or an assembly reference?)
If you encounter this compile error, it means one of the following things:
MidiJack has not been installed properly.
Solution #1: Remove any previous installations of MidiJack (ie. remove it from Assets/MidiJack) and instead import the included package in Assets/AxonGenesis/Timeflow/AddOns/MidiJack.unitypackage
Note that if MidiJack is located outside of the Assets/AxonGenesis directory it will not be visible to the AxonGenesis assembly and will result in compile errors. Therefor, MidiJack must be moved inside the AxonGenesis directory, with the suggested path of Assets/AxonGenesis/Timeflow/AddOns/MidiJack
The MIDIJACK scripting define symbol is set but MidiJack is not installed.
Solution #2: Use the above solution to use MidiJack, otherwise if you are not using this in your project, go to Project Settings > Player > Scripting Define Symbols and remove the MIDIJACK symbol then press Apply.
The type or namespace name 'InputSystem' does not exist in the namespace 'UnityEngine' (are you missing an assembly reference?)
If you encounter this error, it means that the new Input System is enabled but has not been properly installed.
Solution #1: Open the Package Manager and select 'Packages: Unity Registry'. Then search for 'Input System' and install the package.
Solution #2: If you are not using the new Input System, you may disable it and return to using the legacy Input Manager. This is configured in Player Settings.
CaptureScreenshotAsTexture() cannot be called outside of playmode.
This error may occur when interrupting a render using Render to Disk by exiting play mode. If this error occurs, it is harmless and may be ignored. Note also that the subsequent related error may appear and may also be ignored: RenderToDisk.RenderFrame: Failed encoding texture to JPG.
Measures inaccurately displayed in the timeline
When using musical timing, under some conditions it can occur that the measures increments displayed don't accurately match the timing. As shown in the example below, it would be expected to show measure 4.1.1 and not 3.5.8.
Solution: This is caused by the Time Tolerance setting in the Preferences. When using a time signature which results in time increments that do not align with the time tolerance, the values are rounded to the nearest frame. To fix this, the Time Tolerance value may be lowered or changed to an interval that is equally divisible into the time signature.
The frame rate in a build is much lower than in the editor
This is most often caused by VSync, which matches the framerate to the refresh rate of the display device. This is a helpful feature to render only what is needed, otherwise the GPU will work overtime and consume more power than needed.
For further information, see the Unity documentation regarding VSync: https://docs.unity3d.com/2021.3/Documentation/Manual/class-QualitySettings.html
Last updated