⌚
Timeflow
  • ⌚Introduction
  • 📗User Guide
    • â–ļī¸Getting Started
      • ✅Requirements
      • âŦ‡ī¸Installation
      • 🚀Quick Start
      • âœī¸Workflow
      • đŸŽŦRender Pipeline
      • â¯ī¸Editor vs Runtime
      • đŸĻŋHow it Works
      • â›‘ī¸Potential Issues
      • ⚡Optimization
      • 🔨3rd Party Tools
      • đŸ”ĸUpgrading Guide
    • â„šī¸Timeflow Editor
      • đŸŽ›ī¸Menu Bar
      • â˛ī¸Time
      • Local Time Scope
      • 🧰Work Area
      • âš™ī¸Settings
      • âŗUpdate Settings
      • đŸ“ēDisplay Lists
      • đŸ”ģMarkers
      • đŸ”ĩObject
      • 🏭Managed Objects
      • ⚡Quick Select Objects
      • âš’ī¸Tools
    • đŸŽŦTimeflow View
      • 🔩Toolbar
        • 🔑Auto Keyframing
        • â¯ī¸Play Controls
        • đŸĨ…Work Area
        • â¯ī¸Current Time
        • đŸŽŧMusical Timing
        • 🌐Grid and Snap
        • 🔸Keyframe Values
        • đŸ”ģMarkers
      • â˛ī¸Timeline
      • 📐Time Navigation
      • Local Time Scope
      • 🎏Track View
      • â†˜ī¸Selection
      • 📰Object Panel
      • đŸ“ēDisplay Lists
      • 🍱Channels
      • đŸŖProperties
      • 🔗Channel Link
      • đŸšĨSwitches
      • 📅Values Column
      • đŸ›¤ī¸Tracks
      • 🔸Keyframes
      • đŸ“ļAlignment Tools
      • ⌛Time Offset
      • đŸ”ĸInfo Panel
      • 📉Graph View
      • âœ‚ī¸Keyframe Tools
    • 🍰Menus & Shortcuts
      • 📃Context Menus
        • â†–ī¸Select Menu
        • 📰Object Menu
        • 🍱Channel Menu
        • đŸ›¤ī¸Tracks Menu
        • 🔸Keyframes Menu
        • đŸ”ģMarkers Menu
        • 📰View Menu
        • 📰Events Menu
        • đŸĨ…Work Area Menu
      • đŸ—ƒī¸File Menu
      • âš’ī¸Timeflow Menu
        • đŸ•ēAdd Behavior
        • đŸ”ļAnimation
        • 🍱Composition
        • đŸ“ēDisplay
        • ⏊Jump To
        • 👨‍đŸ‘Ļ‍đŸ‘ĻHierarchy
        • 🌐Mesh
        • 👉Select
        • 📚Tracks
        • 🌈Track Colors
        • â†”ī¸Transform
        • đŸ‘ī¸Visibility
        • đŸ› ī¸Editor
      • đŸ”ĩGame Objects Menu
      • đŸŽ›ī¸Presets
      • âš™ī¸Preferences
        • Assets
        • ⌛Time
        • đŸŗī¸â€đŸŒˆTracks
        • âšĒObjects
        • 🧮Channels
        • đŸ”ļKeyframes
        • 🔠Input
        • đŸ“ĨImport
        • đŸ–ŧī¸Rendering
        • đŸŽ›ī¸Overrides
        • 🍱Extras
      • *ī¸âƒŖKeyboard Shortcuts
        • Managing Shortcuts
      • âœ´ī¸Quick Menu
  • Reference
    • đŸ”ĩTimeflow Object
      • đŸĸTracks
      • 🏭Behaviors
      • ⏰Events
      • đŸ—ƒī¸Channels
    • 💃Timeflow Controller
      • đŸŽžī¸Timeflow Playback
    • đŸĒ„Behaviors
      • đŸŽžī¸Animation
        • 🔸Keyframer
        • â†”ī¸Tween
        • 🔀Blend
        • đŸŽĸMotion Path
        • đŸ‘¯Animation Clips
        • 🌴Animator Blend Trees
        • 😁Blend Shapes
      • 🤖Automation
        • 🛸Auto Bank
        • 🧭Auto Rotate
        • 📐Distance
        • ⏰Event
        • đŸ›Šī¸Flyby
        • 🏃Follow
        • 👀Look At
        • đŸŽ¯Look At Target
        • 🎲Noise
        • 🚊Place On Path
        • đŸī¸Place On Surface
      • 🔊Audio
        • 🔊Audio Track
        • đŸŽŧAudio Spectrum
        • đŸŽĩAudio Sample
        • đŸŽ™ī¸Audio Reactive
      • 🎹MIDI
        • 🎹Midi File
        • đŸĨMidi Tween
        • 📡Midi Receiver
          • đŸŽ›ī¸Minis Setup (New Input System)
          • đŸšĨMidiJack Setup (Legacy Input)
      • 🏁Rendering
        • đŸŽžī¸Render To Disk
        • 📋Render Queue
        • đŸ“Ŋī¸Video Encoding
        • 💡Tips & Optimizations
        • âēī¸Unity Recorder
      • 🔧Tools
        • â„šī¸Animator Info
        • 🧮Align Children
        • đŸ’ŦComment
        • #ī¸âƒŖFPS Counter
        • 📈Graph
        • 🔗Property Link
        • 🔄Rotator
        • ✨Particle System Update
        • 🌈Trail Renderer Update
        • đŸ“ēVideo Player Update
    • đŸ—ƒī¸Precomposing
    • 🏭Prefabs
    • đŸŽ›ī¸Editor Overrides
      • 🏹Transform Editor Override
    • 🔌Integrations
      • đŸ§™â€â™‚ī¸Adventure Creator
      • đŸŽ›ī¸MIDI Jack | Minis
      • đŸ¤ēSpine Animation
      • đŸ“Ŋī¸Unity Timeline
      • ➰Unity Splines
    • đŸĒSamples
      • đŸ•šī¸Demo App
      • đŸŽžī¸Cutscenes
      • 🏓Physics
      • 🍧Shader Properties
      • ⚡Visual Effect Graph (VFX)
    • 📖Glossary
    • 📗Scripting
    • đŸ“ŖPublished Works
    • âš ī¸Known Issues
    • 🆘Support
    • đŸ§ĒBeta
    • Roadmap
    • đŸ”ĸVersion History
    • ÂŠī¸Terms & Privacy
Powered by GitBook
On this page
  • Adding Channels with Properties
  • Assigning Properties
  • Attribute (X,Y,Z)
  • Combined
  • Uniform Value
  • Data Types
  • Float
  • Integer
  • Boolean
  • Vector
  • Color
  • Rect
  • String
  • Component
  • GameObject
  • Textures
  • Data-Only Properties
  • Cross-Object References
  • Scripting Custom Properties
  • Property Errors and Unassigned Properties
  1. User Guide
  2. Timeflow View

Properties

Assigning and managing property mappings

PreviousChannelsNextChannel Link

Last updated 3 months ago

Properties map to a specific value or field with a component or material. This provides the means to apply animations and behaviors to game objects.

Adding Channels with Properties

When adding a property-based channel or behavior, the context menu displays a list of component properties on the object, shown below.

Submenus are organized by component, each listing the properties that can be animated, followed by the target attribute (if it is a complex value, such as a vector or color).

Avoid multiple animation channels targeting the same property, otherwise conflicts may produce unexpected and unpredictable results.

Alphabetical Sorting

Properties are listed in alphabetical order, with longer lists divided into submenus starting with the first letter of the property name. These names are defined by the script or object they belong to.

Property lists are created automatically using System.Reflection to discover all writable fields filtered by type to expose only values which Timeflow can animate. All others are hidden including internal editor variables which shouldn't be animated.

Assigning Properties

Properties may be changed at any time and reassigned from one value type to another. When the value has multiple attributes (such as a vector or color), an extra drop-down menu is displayed on the right to select the attribute, or choose Combined or Uniform Value, described in more detail below.

Attribute (X,Y,Z)

Any property type with more than one value is displayed with the option to select a single attribute or all. An attribute in this case refers to a specific axis (X, Y, Z, W) or color channel (R, G, B, A) or other attribute particular to the data type.

Combined

Instead of a single attribute, you can use Combined mode to animate the whole complex value. For example, when animating an object's position, this allows each keyframe to store a 3d coordinate (Vector3). Each attribute is displayed with a separate curve in the Graph View, however the attributes share the same keyframe time and interpolation.

Separate vs Combined Adding each attribute (X,Y,Z) as a separate channel provides more control since each channel has its own independent keyframes. However, a single combined channel is more convenient for some value types, such as when animating colors.

Uniform Value

This mode assigns the same value to each attribute (ex: XYZ = 1,1,1). This mode is most commonly used for scale values to maintain uniform scale.

Data Types

Timeflow properties support all standard numerical types as well as objects and strings.

Float

Double and Decimal types are supported but converted to Float for processing, since these large numeric types are almost never used in Unity and would bloat serialization and memory if included. Mapping properties to double fields should work as expected, though precision is limited to float values.

Integer

All integral types are converted to Int32. Output values may or may not respect unsigned types, however Limit Value may be used on channels to strictly keep values within a specified range.

Boolean

Boolean values can only be on or off (true or false).

Vector

Vector values can range from 2 to 4 attributes (X, Y, Z, W)

Color

Color values have 4 attributes (R, G, B, A).

Rect

Rect values are similar to vectors but with slightly different attributes (X, Y, W, H)

String

String values control text properties.

Strings and object types do not interpolate but change immediately when the keyframe is reached. Although the keyframes can be moved vertically in the graph view, it has no effect on the animation.

Component

Use this type to animate component reference fields.

GameObject

Animates references to game objects.

Textures

Animates texture references.

Data-Only Properties

A data-only assignment may also be used to temporarily bypass normal output while still keeping the channel alive and continuing to produce output values for other channels to reference.

Cross-Object References

Properties by default relate to the current game object, however may target properties on other game objects in the scene.

Scripting Custom Properties

Timeflow automatically discovers all serialized fields in MonoBehaviour-based components. However, when you need to animate a value that is not directly accessible, such as a static field, a Scriptable Object, or a custom data type, then you'll need to write a simple script to expose the value.

using AxonGenesis;
using UnityEngine;

[ExecuteInEditMode]
public class CustomPropertyExample : MonoBehaviour
{
    [Tooltip("Animate this Value to control your custom type")]
    public float Value;

    private class MyCustomType
    {
        public void SetValue(float value)
        {
            Debug.Log("Value: " + value);
        }
    }

    private MyCustomType myCustomType;

    void Start()
    {
        myCustomType = new MyCustomType();
    }

    void Update()
    {
        // Pass the value to your custom type or method
        myCustomType.SetValue(Value);
    }
}

Above is an example script showing how to animate a value which isn't directly accessible in the properties menu. This script can be added to a game object and then animated to control the underlying value.

Property Errors and Unassigned Properties

If you encounter a warning icon or an "(Unassigned)" property, it simply means that the property mapping is invalid or not found. This can be solved by clicking on the red button to select a property from the menu displayed.

This warning can also occur when there are property-breaking script changes, such as the field name being renamed or removed from serialization. If a code change you make causes this to occur, you may consider reverting those changes, or otherwise reassign any broken property mappings.

For further on this topic, see .

Discovering Properties To explore properties it is recommended to look at the code in question, or to use in the Inspector to display all component properties. Holding the Alt key while in the Inspector reveals the internal names of fields.

When a channel is selected, its property assignment is displayed in the or in the Inspector view. Clicking the main button (displaying the current assigned property name) displays a drop-down menu to select another property.

A single .

All are supported, including enumerations. Interpolation is supported with integer types, however produces stepped results.

Instead of mapping to a field value, a property may instead be used to hold data of any type. A data-only property has no direct output other than to store and/or generate a value which can be used for calculations using or other scripting method.

Click the link icon to show the game object reference field. This is only displayed if there is adequate horizontal space, so expanding the panel or view may be needed.

Use caution when using cross-object mappings! This feature is allowed, however not recommended as a general practice since it can lead to confusing setups that are difficult to troubleshoot. If you do create such mappings, it is advised to use or a on the target object to indicate which objects control it.

📗
đŸŽŦ
đŸŖ
Debug Mode
Info Panel
floating point value
integral data types
Channel Link
Comment
labels
Note that only properties on the current game object are displayed in the context menu.
A typical property display
To assign a different object, drag and drop it in the reference field. It must be an object in the scene.
Property Handlers