Animation Composer System - ACS

About Animation Composer System - ACS – Unity Editor Tool & Plugin

Animation Composer System - ACS Unity Asset Overview

If you have worked on medium-to-large Unity projects, you already know how quickly standard Animator Controllers can spiral out of control. Managing dozens of state transitions for simple interface movements, squashing/stretching character meshes, shifting shader variables, or triggering world-space visual effects usually leaves project hierarchies bloated and hard to debug. Animation Composer System (ACS) addresses this issue directly by providing a unified, multi-track animation runner that connects Transforms, UI elements, Shader parameters, Environment props, and VFX systems into a single workflow.

Architecturally, ACS acts as an orchestration layer sitting between your gameplay logic and Unity's underlying rendering and transform pipelines. Instead of forcing developers to instantiate heavy Animator components for minor procedural tweaks, ACS evaluates modular curve profiles using a low-overhead update loop. In my experience testing this setup across mid-tier mobile hardware and desktop builds, skipping Mecanim overhead for non-skeletal animations drastically cuts down baseline runtime overhead and garbage collection pressure.

Core Technical Features & Highlights

What sets ACS apart from simple tweening libraries is its multi-domain targeting. Rather than focusing purely on UI or transform movements, it binds several engine subsystems together under one sequence timeline.

Shader & Material Property Driving

A major win in ACS is how it handles shaders. Many standard UI and visual effect assets force duplicate material creation at runtime when modifying properties, which destroys draw call batching. ACS defaults to MaterialPropertyBlock manipulation for mesh renderers and lightweight canvas overrides for UI shaders, keeping draw calls predictable even when dozens of objects dissolve, flash, or shift colors at once.

using UnityEngine;
using ACS.Core;

public class ACSPulseController : MonoBehaviour
{
    [SerializeField] private ACSComposer _composer;
    [SerializeField] private string _pulseSequenceName = "DissolveAndFlash";

    private void Start()
    {
        if (_composer != null)
        {
            // Register callback when the sequence finishes evaluating
            _composer.OnSequenceComplete += HandleSequenceFinished;
        }
    }

    public void TriggerEffect()
    {
        // Play named sequence using cached parameters
        _composer.PlaySequence(_pulseSequenceName);
    }

    private void HandleSequenceFinished(string sequenceID)
    {
        Debug.Log($"ACS Sequence finished executing: {sequenceID}");
    }

    private void OnDestroy()
    {
        if (_composer != null)
        {
            _composer.OnSequenceComplete -= HandleSequenceFinished;
        }
    }
}

Ideal Use Cases & Game Genres

ACS shines whenever you need tightly synchronized multi-system feedback without writing custom coroutine controllers for every single game object.

Quick-Start Unity Setup & Integration Guide

Integrating ACS into an existing workflow is straightforward. Here is the developer process I follow to get a modular interactive element running cleanly in a project.

1. Component Setup

Attach the ACSComposer script to your target GameObject. In the Inspector, you will see a clean timeline interface allowing you to add target tracks. Select the property type you wish to animate—such as Transform.LocalScale, CanvasGroup.Alpha, or Shader.Float.

2. Configuring Shader & Particle Tracks

When adding a shader track, assign your target Renderer and input the exact string name of the shader property (for example, _DissolveAmount or _EmissionColor). ACS automatically caches the property ID on initialization. For VFX tracks, link your ParticleSystem component to trigger emission bursts at specific time markers on the curve.

3. Programmatic Triggering & C# Integration

To control sequences directly from game logic (such as player interactions or health updates), reference the component and invoke playback via script:

using UnityEngine;
using ACS.Core;

[RequireComponent(typeof(ACSComposer))]
public class DynamicHealthFeedback : MonoBehaviour
{
    private ACSComposer _acsComposer;
    private static readonly int CriticalFlashTrack = Shader.PropertyToID("_FlashIntensity");

    private void Awake()
    {
        _acsComposer = GetComponent<ACSComposer>();
    }

    public void OnPlayerTakeDamage(float damageAmount)
    {
        // Dynamically scale sequence playback speed based on damage severity
        float speedMultiplier = Mathf.Clamp(damageAmount / 10f, 0.5f, 2.5f);
        _acsComposer.SetPlaybackSpeed(speedMultiplier);
        
        // Play the hit sequence
        _acsComposer.Play();
    }
}

Pros & Cons Assessment

Pros

Cons

Asset Details & Specifications

CategoryTools / Animation
Latest Versionv1.3.9 (3 tracked releases)
File Size19.69 MB
Added to PlatformMay 28, 2026
Views11 views
Downloads4 downloads
Favourites0 favourites
Official StoreBuy Original License on Unity Asset Store →
Issue with Package?Report Broken Link →

Developers Who Downloaded This Also Downloaded

Related Unity Tools Assets