User Manual

Inspector Settings

Main Settings

Render Mode

Type: Enum (VertexExpansion / MetricScale)

Determines how the outline is rendered.

  • VertexExpansion: Expands along vertex normals. Best for characters.
  • MetricScale: Scales uniformly in world space. Best for cubes.

Outline Width

Type: float (0-0.3)
Default: 0.05

The thickness of the outline effect. Range: 0 (no outline) to 0.3 (very thick).

Enable On Start

Type: bool
Default: true

If true, the outline will be visible when the scene starts. If false, you must call Show() via script to make it visible.

Color Style

Use Gradient

Type: bool
Default: false

Enables gradient coloring from top to bottom. If false, uses solid color from “Color Top”.

Color Top

Type: Color
Default: Yellow (RGBA: 1, 0.92, 0.016, 1)

  • When gradient is enabled: Color at the top of the object
  • When gradient is disabled: The solid outline color

Color Bottom

Type: Color
Default: Red (RGBA: 1, 0, 0, 1)

Color at the bottom of the object (only used when gradient is enabled).

Animation

Pulse Width

Type: bool
Default: false

Enables pulsing animation that varies the outline width over time. Creates a breathing or heartbeat effect.

Pulse Speed

Type: float
Range: 0.1 to 10
Default: 2

Speed of the pulse animation. Higher values = faster pulsing. Only used when “Pulse Width” is enabled.

Scroll Gradient

Type: bool
Default: false

Scrolls the gradient colors vertically over time. Creates a moving rainbow or energy effect. Requires “Use Gradient” to be enabled to be visible.

Scroll Speed

Type: float
Range: 0.1 to 5
Default: 0.5

Speed of the gradient scrolling effect. Only used when “Scroll Gradient” is enabled.

Compatibility Notes

2D Objects (SpriteRenderer)

  • Uses a specialized 2D shader that scales the sprite
  • Works with any sprite, including sprite sheets
  • Outline width is applied as a scale multiplier

3D Objects (MeshRenderer / SkinnedMeshRenderer)

  • Uses a dual-pass rendering approach
  • Renders the outline first, then the original object
  • Compatible with any material and shader

Material Property Blocks

  • The system uses Material Property Blocks to avoid creating material instances
  • Original materials are never modified
  • Safe to use with shared materials across multiple objects