Quick reference for terms used throughout Unity Helpers documentation.
- A dynamic numeric value with a base and calculated current value
- Current value applies all active modifications from effects
- Used in the Effects System for stats like Health, Speed, Defense
- See: Effects System
- Reusing pre-allocated collections (List, arrays) to minimize GC allocations
- Pass a buffer to API methods that clear and fill it with results
- Critical for performance in hot paths (per-frame queries)
- See: Buffering Pattern
- Spatial data structure that cannot be modified after creation
- Must be rebuilt when underlying data changes
- Provides consistent query performance but requires full reconstruction
- Examples: QuadTree2D, KdTree2D, RTree2D
- See: Spatial Trees
- Automatic integration with Odin Inspector when installed
- Base classes switch from MonoBehaviour → SerializedMonoBehaviour
- Enables serialization of dictionaries, polymorphic fields, etc.
- No code changes required - works automatically via #if ODIN_INSPECTOR
- See: Singletons - Odin Compatibility
- Reusable memory allocations managed by
Buffers<T>orWallstopArrayPool<T> - Reduces GC pressure by recycling collections instead of allocating new ones
- Use with
usingstatements for automatic cleanup - See: Buffering Pattern
- Attributes that auto-wire component references via hierarchy traversal
- Includes:
[SiblingComponent],[ParentComponent],[ChildComponent] - Eliminates manual GetComponent calls
- See: Relational Components
- Random number generator that accepts a seed value for deterministic output
- Same seed = same sequence of random numbers
- Essential for replay systems, networked games, procedural generation
- See: Random Performance
- Array-backed binary tree maintaining min/max heap property
- O(log n) push/pop, O(1) peek
- Used for priority queues, pathfinding, event scheduling
- See: Data Structures - Heap
- Fixed-capacity circular array with wrapping head/tail pointers
- O(1) enqueue/dequeue at both ends
- Overwrites oldest data when full
- See: Data Structures - Cyclic Buffer
- Data structure tracking partitions of elements into sets
- Near O(1) union/find operations with path compression
- Used for connectivity, clustering, MST algorithms
- See: Data Structures - Disjoint Set
- Binary tree partitioning space along alternating axes
- Excellent for nearest neighbor queries on points
- Balanced variant: consistent query time; Unbalanced: faster builds
- See: 2D Spatial Trees
- Tree recursively splitting 2D space into four quadrants
- General-purpose spatial structure for points
- Good for range queries, broad-phase collision detection
- See: 2D Spatial Trees
- Tree grouping items by minimum bounding rectangles (MBRs)
- Optimized for objects with size/bounds
- Excellent for bounds intersection queries
- See: 2D Spatial Trees
- Two arrays (sparse + dense) enabling O(1) membership checks
- O(1) insert/remove/contains with cache-friendly dense iteration
- Requires contiguous ID space for indices
- See: Data Structures - Sparse Set
- Grid-based spatial structure with fixed cell size
- Excellent for many moving objects uniformly distributed
- O(1) insertion with fast approximate queries
- See: README - When to Use Spatial Trees
- Tree keyed by characters for efficient prefix lookups
- O(m) search where m = key length
- Used for autocomplete, spell-checking, dictionary queries
- See: Data Structures - Trie
- Pre-generated metadata for Effects System attributes
- Eliminates runtime reflection overhead
- Powers editor dropdowns for attribute names
- Auto-generated on editor load
- See: Editor Tools - Attribute Metadata Cache
- Custom inspector rendering for serialized fields
- Examples:
[WShowIf],[StringInList],[WReadOnly] - Improves editor workflows with conditional display, validation, etc.
- See: Property Drawers
- Global settings/data singleton backed by a Resources asset
- Auto-created by editor tool with
[ScriptableSingletonPath]attribute - Accessed via
T.Instancepattern - See: Singletons
- Polyline simplification algorithm that reduces vertex count
- Preserves shape within epsilon tolerance
- Used by
LineHelper.SimplifyandSimplifyPrecise - See: Math & Extensions - Geometry
- Data-driven gameplay modification system
- Flow: Author AttributeEffect → Apply to GameObject → Modifications + Tags + Cosmetics
- Handles stacking, duration, removal automatically
- See: Effects System
- Opaque identifier for a specific effect application instance
- Used to remove one stack of an effect
- Only returned for Duration/Infinite effects (Instant returns null)
- See: Effects System
- Modulo operation that always returns non-negative results
- Essential for array indices and angle normalization
- Use
WallMath.PositiveModinstead of%operator - See: Math & Extensions - Numeric Helpers
- Component managing string tags with reference counting
- Multiple sources can apply same tag; removed when count reaches 0
- Used for categorical states (Stunned, Poisoned, Invulnerable)
- See: Effects System
- Compact binary serialization format from Google
- Forward/backward compatible with schema evolution
- Requires
[ProtoContract]and[ProtoMember(n)]annotations - See: Serialization - Protobuf
- Modern .NET JSON serialization library
- Unity Helpers provides custom converters for Unity types
- Profiles: Normal, Pretty, Fast, FastPOCO
- See: Serialization - JSON
- Custom JSON converters for Unity engine types
- Supports: Vector2/3/4, Vector2Int/3Int, Color/Color32/ColorBlock, Quaternion, Matrix4x4, Pose, Plane, SphericalHarmonicsL2, Bounds/BoundsInt, Rect/RectInt/RectOffset, RangeInt, Ray/Ray2D/RaycastHit, BoundingSphere, Resolution, RenderTextureDescriptor, LayerMask, Hash128, Scene, AnimationCurve, Gradient, Touch, GameObject, ParticleSystem.MinMaxCurve, ParticleSystem.MinMaxGradient, System.Type
- Automatically included in Unity Helpers JSON options
- See: Serialization
- Average complexity over many operations
- Example: Deque push is O(1) amortized (occasional O(n) resize)
- Smooths out occasional expensive operations
- Describes algorithm scaling behavior
- O(1) = constant time, O(log n) = logarithmic, O(n) = linear, O(n²) = quadratic
- Smaller is better; focus on dominant term
- Data layout that maximizes CPU cache hits
- Contiguous memory access patterns (arrays) are cache-friendly
- Random memory jumps (linked lists) are cache-unfriendly
- Frequency and volume of garbage collection required
- High pressure = frequent allocations = more GC pauses
- Reduce with object pooling, reusable buffers, value types
- Code executed very frequently (per-frame, per-update)
- Performance critical; avoid allocations and expensive operations
- Profile to identify actual hot paths
- Unity's ahead-of-time (AOT) compiler for mobile/console
- Reflection is expensive; metadata caching becomes critical
- Some reflection patterns may not work; prefer cached delegates
Axis-Aligned Bounding Box
Ahead-Of-Time (compilation)
Data Transfer Object (simple data container for serialization)
First-In-First-Out (queue behavior)
Garbage Collector/Garbage Collection
High Definition Render Pipeline
k-Nearest Neighbors
Last-In-First-Out (stack behavior)
Minimum Bounding Rectangle
Minimum Spanning Tree
Plain Old CLR Object (simple class with no framework dependencies)
Pixels Per Unit (sprite import setting)
Pseudo-Random Number Generator
Random Number Generator
Universal Render Pipeline
- Feature Index - Alphabetical feature index
- Getting Started Guide - Quick start guide
- Main Documentation - Main documentation