Skip to content

Home

Unity Helpers Banner

GitHub Wiki OpenUPM


Utilities tested in commercial releases

Unity Helpers reduces repetitive work with utilities tested in commercial releases. Benchmarks demonstrate 10-15x faster random generation compared to Unity.Random and significant speedups for common reflection operations. From auto-wiring components to fast spatial queries, this toolkit provides common utilities for Unity development.


Quick Install

Bash
openupm add com.wallstop-studios.unity-helpers

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

Text Only
https://github.com/wallstop/unity-helpers.git

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"
  }
}

Download the latest release .unitypackage or clone the repository.


What Makes This Different

Inspector Tooling

Grouping, buttons, conditional display, toggle grids for Unity inspectors, free and open source.

Learn more

10-15x Faster Random

PRNG.Instance provides high-performance random generation with API including weighted selection, Gaussian distribution, and Perlin noise.

Learn more

Zero-Boilerplate Component Wiring

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

Learn more

Data-Driven Effects System

Designer-friendly buffs and debuffs as ScriptableObjects. Add new effects via data instead of code changes.

Learn more

O(log n) Spatial Queries

QuadTree, KdTree, RTree, OctTree, and SpatialHash for 2D and 3D. Efficient spatial queries without linear iteration.

Learn more

20+ Editor Tools

Automate sprite, animation, texture, and prefab workflows. Reduces manual repetitive tasks.

Learn more


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 - Inspector attributes, 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 with weighted selection, Gaussian, Perlin noise ~1 minute
Need save/load system Serialization - Unity types supported ~10 minutes
Manual sprite workflows Editor Tools - 20+ automation tools ~3 minutes

Not sure where to start?

The Getting Started Guide walks through the top 3 features in 5 minutes.


Quick Examples

Auto-Wire Components

Player.cs
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 all marked fields
    }
}

Fast Random Generation

LootDrop.cs
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

CharacterStats.cs
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

8,000+ automated tests.

Shipped in Commercial Games

Used in commercial game releases.

IL2CPP & WebGL Compatible

Compatible with IL2CPP and WebGL. Includes optimizations for AOT compilation.

Schema Evolution

Forward and backward compatible serialization — add new fields without breaking existing saves.


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 View on GitHub