Skip to content
github-actions[bot] edited this page Jan 24, 2026 · 7 revisions

title: Unity Helpers description: Production-ready Unity utilities - 10-15x faster PRNGs, O(log n) spatial queries, zero-allocation pooling, Odin-level inspector tooling, and data-driven effects.

![Unity Helpers Banner](images/unity-helpers-banner.svg){ width="800" }
[![GitHub](https://img.shields.io/badge/GitHub-Repository-blue?logo=github)](https://github.com/wallstop/unity-helpers) [![Wiki](https://img.shields.io/badge/Wiki-Community_Resources-green)](https://github.com/wallstop/unity-helpers/wiki) [![OpenUPM](https://img.shields.io/npm/v/com.wallstop-studios.unity-helpers?label=openupm&registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.wallstop-studios.unity-helpers/)

Stop writing boilerplate. Start shipping features.

Unity Helpers eliminates entire categories of repetitive work with production-ready utilities that are 10-100x faster than writing it yourself. From auto-wiring components to blazing-fast spatial queries, this is the toolkit that pays for itself in the first hour.


Quick Install

=== "OpenUPM (Recommended)"

```bash
openupm add com.wallstop-studios.unity-helpers
```

=== "Git URL"

In Unity Package Manager, click **Add package from git URL** and enter:

```text
https://github.com/wallstop/unity-helpers.git
```

=== "NPM Registry"

Add scoped registry in `manifest.json`:

```json
{
  "scopedRegistries": [
    {
      "name": "npm",
      "url": "https://registry.npmjs.org",
      "scopes": ["com.wallstop-studios"]
    }
  ],
  "dependencies": {
    "com.wallstop-studios.unity-helpers": "3.0.0"
  }
}
```

=== "Source"

Download the [latest release](https://github.com/wallstop/unity-helpers/releases) `.unitypackage` or clone the repository.

What Makes This Different

Professional Inspector Tooling

Grouping, buttons, conditional display, toggle grids - all the features you love from Odin Inspector, completely free.

Learn more :material-arrow-right:{ .md-button }

10-15x Faster Random

PRNG.Instance provides blazing-fast random generation with extensive API including weighted selection, Gaussian distribution, and Perlin noise.

Learn more :material-arrow-right:{ .md-button }

Zero-Boilerplate Component Wiring

Auto-wire components with attributes like [SiblingComponent], [ParentComponent], and [ChildComponent]. Works with DI containers.

Learn more :material-arrow-right:{ .md-button }

Data-Driven Effects System

Designer-friendly buffs and debuffs as ScriptableObjects. No code changes needed to add new effects.

Learn more :material-arrow-right:{ .md-button }

O(log n) Spatial Queries

QuadTree, KdTree, RTree, OctTree, and SpatialHash for 2D and 3D. Stop iterating through all objects.

Learn more :material-arrow-right:{ .md-button }

20+ Editor Tools

Automate sprite, animation, texture, and prefab workflows. Save hours of manual work.

Learn more :material-arrow-right:{ .md-button }


First Time Here?

Pick your starting point based on your biggest pain point:

Your Problem Your Solution Time to Value
Writing custom editors Inspector Tooling - Odin-level features, FREE 2 minutes
Writing GetComponent everywhere Relational Components - Auto-wire with attributes 2 minutes
Need buffs/debuffs system Effects System - Designer-friendly ScriptableObjects 5 minutes
Slow spatial searches Spatial Trees - O(log n) queries 5 minutes
Random is too slow/limited Random Generators - 10-15x faster, extensive API 1 minute
Need save/load system Serialization - Unity types just work 10 minutes
Manual sprite workflows Editor Tools - 20+ automation tools 3 minutes

!!! tip "Not sure where to start?"

The [Getting Started Guide](Overview-Getting-Started) walks through the top 3 features in just 5 minutes.

Quick Examples

Auto-Wire Components

using UnityEngine;
using WallstopStudios.UnityHelpers.Core.Attributes;

public class Player : MonoBehaviour
{
    // Auto-finds on same GameObject
    [SiblingComponent] private SpriteRenderer spriteRenderer;

    // Auto-finds in parent hierarchy
    [ParentComponent] private Rigidbody2D rigidbody;

    // Auto-finds all in children
    [ChildComponent] private Collider2D[] childColliders;

    void Awake()
    {
        this.AssignRelationalComponents(); // One call wires everything!
    }
}

Fast Random Generation

using WallstopStudios.UnityHelpers.Core.Random;
using WallstopStudios.UnityHelpers.Core.Extension;

public class LootDrop : MonoBehaviour
{
    void Start()
    {
        // 10-15x faster than UnityEngine.Random
        IRandom rng = PRNG.Instance;

        // Basic usage
        int damage = rng.Next(10, 20);
        float chance = rng.NextFloat();

        // Weighted random selection
        string[] loot = { "Common", "Rare", "Epic", "Legendary" };
        float[] weights = { 0.6f, 0.25f, 0.10f, 0.05f };
        int index = rng.NextWeightedIndex(weights);
        Debug.Log($"Dropped: {loot[index]}");
    }
}

Inspector Attributes

using UnityEngine;
using WallstopStudios.UnityHelpers.Core.Attributes;

public class CharacterStats : MonoBehaviour
{
    [WGroup("combat", "Combat Stats", collapsible: true)]
    public float maxHealth = 100f;
    [WGroupEnd("combat")]
    public float defense = 10f;

    public enum WeaponType { Melee, Ranged, Magic }
    public WeaponType weaponType;

    [WShowIf(nameof(weaponType), WShowIfComparison.Equal, WeaponType.Ranged)]
    public int ammoCapacity = 30;

    [WButton("Heal to Full", groupName: "Debug")]
    private void HealToFull() { maxHealth = 100f; }
}

Production Ready

8,000+ Tests

Extensive test coverage ensures edge cases are handled before you hit them.

Shipped in Commercial Games

Battle-tested at scale in real-world production environments.

IL2CPP & WebGL Compatible

Works with aggressive AOT compilers. No "works in editor but not in build" surprises.

Schema Evolution

Player saves never break from updates. Forward and backward compatible serialization.


Documentation

Features

Performance


License

Unity Helpers is released under the MIT License. Use it freely in commercial and personal projects.


**Ready to get started?**

Getting Started Guide{ .md-button .md-button--primary } View on GitHub{ .md-button }

Clone this wiki locally