Unity 6000.0+ · Built-in & URP

Ultimate Colorizer

The complete recolorization framework for Unity — textures, materials, meshes, sprites, tilemaps and palettes, plus runtime character dyes and cosmetics. Click-to-recolor in the Editor with no code, or drive everything from a clean C# API.

Unity 6000.0+ No-Code Ready Built-in & URP Editor + Runtime Source-available C#
ⓘ
One package, two ways to work. No-code: add a component, pick a color, and press Play — the object recolors with zero scripting. Code-first: the same components and a documented API give power users full control. The no-code layer is purely additive: it never overrides values you set from code.
✅
Non-destructive by default. Material recoloring uses MaterialPropertyBlock — your shared materials and source textures are never mutated. Preview in the Editor, undo freely.

This guide leads with the no-code workflow, then covers the recolor engine, the runtime systems, and the scripting API and reference at the end.

⤓ Installation

Import once — there is nothing to configure to start recoloring.

Import from the Asset Store
In Window → Package Manager → My Assets, download and import Ultimate Colorizer. It lands at Assets/UltimateColorizer/.
The Welcome window opens once
On first import a Welcome window appears with quick actions. You can re-open it any time from Tools → Ultimate Colorizer → Welcome.
Add a recolor object
GameObject → Ultimate Colorizer → Material Tint Cube drops a ready, pre-wired object into the scene.
Press Play
The object recolors automatically. No scripting required.

Requirements

What gets installed

Assets/UltimateColorizer/
  Runtime/        // Core model, texture/material/mesh engines, palettes,
                  //   runtime customization, characters, batch, SDK, validation
  Editor/         // Recolor Studio, windows, no-code inspectors, Welcome,
                  //   GameObject scaffolding, headless validation/build runners
  Demo/           // An interactive scene showcasing every feature
  Documentation/  // You are here
  Samples/        // Texture, material, mesh, character, cosmetics sample scenes
  Tests/          // EditMode + PlayMode (run headless via Unity -runTests)Project
ⓘ
Clean import. The package is self-contained — it compiles in an empty project with no missing references, and all assembly definitions are populated.

⚡ Quick Start (No-Code)

Recolor a real object in the scene without writing a line of code.

Create a recolor object
GameObject → Ultimate Colorizer → Material Tint Cube. A cube drops in with a Recolor Material Applicator already attached.
Pick a color
In the Inspector, change Color. The cube updates live in the Scene view via the Preview In Scene button.
Make it run on its own
Tick Apply On Start. Now the color applies automatically when the game runs.
Press Play
The object recolors — no script. Try a Sprite Tint Object or a Runtime Dye Controller next.
💡
Preview vs. Apply On Start. Preview In Scene shows the result in the Editor right now. Apply On Start makes it happen automatically at runtime. Leave Apply On Start off if you'd rather drive recoloring from code.
🎥
Prefer to explore first? Open the demo scene from the Welcome window (Tools → Ultimate Colorizer → Welcome → Open the Demo Scene) and press Play. It opens on an interactive Welcome screen that introduces the asset, walks you through this same 3-step quick start, lets you recolor a live preview by clicking a color, and launches a guided tour of every feature.

🔧 Editor Tools & No-Code

Every primary capability is reachable by clicking — add a component, assign data, pick options, get a result.

ⓘ
The no-code contract. Each authoring component has a Setup section, an Apply On Start toggle, and a Preview button. Apply On Start defaults to off, so adding a component from code and driving it with the API behaves exactly as before — the no-code path only activates when you opt in via the Inspector.

The four entry points

➕ GameObject menu

GameObject → Ultimate Colorizer scaffolds ready, pre-wired recolor objects with Undo.

🧩 Components

Add Component → Ultimate Colorizer — each has a friendly inspector with live preview.

📁 Assets → Create

Assets → Create → Ultimate Colorizer creates profiles, palettes, presets and more.

📝 Tools menu

Tools → Ultimate Colorizer opens Recolor Studio and the other authoring windows.

Live preview in the Inspector

The custom inspectors wrap their fields in change-tracking: when you edit a color, texture or option, the component re-applies and the Scene view repaints — so you see the result as you edit, before pressing Play. Property fields that reference a material (color/texture property names) become dropdowns populated from the assigned renderer's shader, so you pick valid options instead of typing strings.

✅
First run. The Welcome window (Tools → Ultimate Colorizer → Welcome) has one-click buttons to open this documentation, open the demo scene, create your first recolor object, and open Recolor Studio.

🧩 Recolor Components

Add these from Add Component → Ultimate Colorizer (or via the GameObject menu).

ComponentWhat it doesNo-code setup
RecolorMaterialApplicatorTints a renderer via a property block (non-destructive).Assign Renderer + Color property + Color, tick Apply On Start.
SpriteRecolorApplicatorTints a SpriteRenderer.Assign Sprite Renderer + Color, tick Apply On Start.
TextureRecolorApplicatorAssigns a texture to a material texture slot.Assign Renderer + Texture Property + Source Texture, tick Apply On Start.
RecolorRuntimeControllerMulti-channel dye driver (e.g. characters).Assign a Profile + Renderer Bindings, tick Apply Defaults On Start.
CosmeticSlotApplicatorToggles cosmetic objects per slot.Add bindings (slot + item + target), tick Apply On Start.
RecolorRuntimeSliderUIWires uGUI sliders to a dye channel (HSV).Assign controller + channel + sliders.
ⓘ
Property dropdowns. On the material/texture applicators, the Color Property / Texture Property field becomes a dropdown sourced from the assigned renderer's shader (e.g. _BaseColor for URP/Lit, _Color for Built-in). If the saved value isn't present, it auto-binds to a valid first option.

➕ GameObject Menu

One click drops a ready, pre-wired object into the scene (full Undo, auto-selected).

Menu itemCreates
GameObject → Ultimate Colorizer → Material Tint CubeA cube with RecolorMaterialApplicator (Apply On Start on, previewed).
GameObject → Ultimate Colorizer → Material Tint SphereA sphere with the same, in a warm tint.
GameObject → Ultimate Colorizer → Sprite Tint ObjectA sprite object with SpriteRecolorApplicator.
GameObject → Ultimate Colorizer → Runtime Dye ControllerAn object with RecolorRuntimeController ready for bindings.

🎨 Palettes & Import

Palette assets hold named, role-tagged colors and import/export as JSON.

Create a palette

Assets → Create → Ultimate Colorizer → Palette. The palette inspector shows a swatch strip, a one-line summary, and Import JSON / Export JSON buttons.

💡
Robust import. Importing a malformed or empty file fails gracefully with a clear dialog — it never throws or half-applies. The JSON format matches PaletteJsonUtility, which the runtime API uses too, so palettes round-trip between projects and tools.

Harmony generation

Generate palettes from a base color with PaletteGenerator.Generate(seed, mode, count). Modes include Complementary, Analogous, Triadic, Monochrome, Value Ramp, Split-Complementary, Tetradic, Saturation Ramp, Warm and Cool. The Palette Browser exposes this visually.

⚙ How It Works

A profile describes what to recolor; processors do the work; a service routes them.

RecolorProfile → RecolorTarget → Operations → IRecolorProcessor → RecolorResult
  1. A RecolorProfile (ScriptableObject) holds targets, palettes, regions, operations and runtime channels.
  2. Each RecolorTarget names a source (texture, material, mesh, sprite, tilemap, renderer, character) and a RecolorTargetType.
  3. An IRecolorProcessor self-selects per target (texture/material/mesh/tilemap) and applies the profile's operations.
  4. RecolorProcessingService routes a target to the right processor through a RecolorProcessorRegistry and returns a RecolorResult with generated objects and validation issues.
ⓘ
Operations are data. RecolorOperationType covers Replace Color, Replace Palette Entry, Hue Shift, Saturation/Value, Gradient Map, Tint, Multiply, Emission Color, Material Property Set, Vertex Color Replace and LUT Map — so a single profile drives many effects.

🖼 Textures & Sprites

CPU texture recoloring with deterministic, non-destructive output.

// Replace a color in a texture (preview copy; source is never mutated)
Texture2D result = TextureRecolorUtility.ReplaceColor(
    source, fromColor, toColor, tolerance: 24, preserveAlpha: true);C#

💎 Materials

Shader-aware material recoloring and variant generation.

ⓘ
Base color resolves automatically. The engine prefers _BaseColor (URP/Lit), falls back to _Color (Built-in/Standard), then the first detected color property.

📐 Meshes & Tilemaps

Vertex colors, UV/submesh workflows, and non-destructive tilemap recoloring.

Meshes

Tilemaps

Recolor a UnityEngine.Tilemaps.Tilemap non-destructively: per-cell color replace, palette swap, HSV shift, multiply, tint, global tint, and color extraction. Per-cell colors live on the tilemap, not the tile, so a single shared tile recolors per cell.

🎭 Character Dye & Cosmetics

Player-facing customization: dye channels, cosmetic slots, deterministic randomize.

Dye channels

A RecolorProfile's Runtime Channels define named, palette-constrained dye channels (skin, hair, cloth, armor, weapon…) with default colors. A RecolorRuntimeController maps each channel to one or more renderer bindings and applies a RecolorRuntimeState at runtime.

// No-code: tick "Apply Defaults On Start" on the controller, or from code:
controller.SetChannelColor("cloth_primary", Color.cyan);
controller.ApplyProfileDefaults();   // build a state from the profile's defaultsC#

Cosmetics

CosmeticSlotApplicator toggles GameObjects per slot (helmet on/off, cape variants). CharacterRandomizer produces a deterministic dye state from a seed and a CharacterRandomizationRules asset (with locked channels and palette constraints).

💾 Save / Load

Serialize a player's appearance as lightweight data — not full textures.

💡
Robust by design. Loading an invalid payload is rejected gracefully (the API returns a failure and a message) rather than throwing.

⚒ Batch & SDK

Generate variants in bulk and extend the framework.

📝 Editor Windows

Open from Tools → Ultimate Colorizer.

WindowPurpose
Recolor StudioTabbed authoring for texture, material, mesh, character, runtime, validation and preview.
Palette BrowserBrowse, generate (harmonies) and validate palettes.
Material Preset LibraryBuild and apply reusable material color presets.
Batch ProcessorRun batch recolor jobs and export reports.
Preset MarketplacePackage and import/export preset bundles.
WelcomeFirst-run onboarding with quick actions (re-openable any time).

📙 Scripting API

The no-code components are thin wrappers over a clean, fully scriptable API.

using UltimateColorizer;

// 1) Recolor a renderer (non-destructive property block)
var applicator = go.AddComponent<RecolorMaterialApplicator>();
applicator.ApplyColor(Color.red);

// 2) Drive a recolor profile through the processing service
var registry = new RecolorProcessorRegistry();
registry.Register(new TextureRecolorProcessor());
var service = new RecolorProcessingService(registry);
RecolorResult result = service.Process(new RecolorContext(profile, target));

// 3) Runtime multi-channel dye
var state = new RecolorRuntimeState();
state.SetColor("skin", skinColor);
controller.Apply(state);
string json = controller.ToJson();   // save
controller.FromJson(json);          // loadC#
ⓘ
Code-first is never overridden. The no-code Apply On Start / Apply Defaults On Start toggles default to off, and the controller's auto-apply bails if a state was already applied from code. Existing scripted setups keep working unchanged.

💡 Troubleshooting

Common issues and quick fixes.

I added a component but nothing recolors on Play

Tick Apply On Start (it defaults to off so code-driven users aren't overridden). For RecolorRuntimeController, tick Apply Defaults On Start and make sure the profile has Runtime Channels and Renderer Bindings.

The color isn't changing / wrong shader property

Use the Color Property dropdown to pick the property your shader actually exposes — _BaseColor for URP/Lit, _Color for Built-in/Standard. The dropdown is populated from the assigned renderer's material.

Emission recolor does nothing in HDRP

HDRP/Lit uses _EmissiveColor (not _EmissionColor). The engine handles both, but verify your material has an emission property and that emission is enabled on the material.

Palette JSON import shows an error dialog

The file isn't valid palette JSON (or is empty). Export a palette first to see the expected format. Import fails gracefully and leaves the palette unchanged.

❓ FAQ

Quick answers.

Do I need to write code?

No. Add a component, pick a color, tick Apply On Start. The C# API is there when you want it.

Will it mutate my materials or textures?

No. Material recoloring uses property blocks; texture operations produce new copies. Your source assets are untouched.

Which render pipelines are supported?

Built-in and URP are supported and verified. HDRP is supported through pipeline-aware adapters; verify on an HDRP project before relying on it.

Does it need the Input System package?

No. It works with both the Input System package and the legacy Input Manager.

Can I use it for runtime player customization / multiplayer?

Yes. Dye state serializes to JSON or a compact, multiplayer-safe payload you can sync and persist.

📬 Support

Need help? We're here for you.

📧

Get in Touch

Bug reports, feature requests, recoloring or shader questions — reach out and we'll get back to you.

✉ szekipapa77@gmail.com

We typically respond within 24–48 hours.

💬 Before contacting
  • Check the Troubleshooting section
  • Confirm the recolor component is on the object
  • Confirm Apply On Start is enabled (or you call the API)
  • Check the Console for validation messages
📋 Helpful info to include
  • Unity version (e.g. 6000.0.30f1)
  • Render pipeline (Built-in / URP / HDRP)
  • The component and shader/material you're using
  • A sample object or repro steps
⭐
Enjoying Ultimate Colorizer? A review on the Unity Asset Store helps other developers discover the asset and helps us keep improving it. Thank you!

Ultimate Colorizer · Built for Unity 6 · Built-in & URP · Source-available C#

Support: szekipapa77@gmail.com