A ScriptableObject skill tree with a visual node editor. Subclass one class to make a skill, double-click a tree to edit it, and it renders with no art required.Pure uGUI and C#: no shaders, materials, Volume profiles or Renderer Features, and nothing added to your cameras. The tree draws on a Screen Space - Overlay canvas, outside the render pipeline entirely, so Built-in, URP, HDRP and custom SRPs all work unchanged. Input runs through the EventSystem, so either input backend works. Unity 6000.5+; only dependency is com.unity.ugui, included with Unity.A skill tree is three problems at once: a graph to author, an effectsystem to hang off it, and progress that has to survive a patch. Thispackage handles all three and then gets out of your way.A REAL GRAPH EDITORDouble-click a tree asset and it opens on a canvas. Right-click to createskills, drag from a port to link them, drag them into place. Multi-select,box select, group drag, snap-to-grid and search. Auto layout arranges thewhole tree into layers using longest-path depth, so diamond shapes readcorrectly instead of collapsing.Live validation flags skills nothing can reach, links to missing nodes,duplicate ids and blank icons - each with a button that jumps straight tothe problem.Node positions in the editor are the exact positions used at runtime.What you arrange is what the player sees.SKILLS ARE YOURS TO WRITEpublic class MaxHealthSkillNode : SkillNode {[SerializeField] private int _healthPerRank = 20;public override void OnUnlocked(SkillTreeContext context, int rank) {context.GetService()?.AddMaxHealth(_healthPerRank);}}That is the whole contract. The type appears in the editor's Create menuon the next compile - no registration, no list to maintain. OverrideGetCost for ranks that get pricier, CanUnlock for gates like quest flagsor player level, GetDescription to fold live numbers into the tooltip.Nothing in the package knows about your game, and nothing in your gamehas to know a skill tree exists.BUILT FOR REAL PROJECTS- Skills are stored as sub-assets, so a tree is one self-contained file.Duplicate it, delete it, hand it to a designer - nothing dangles.- Progress lives in a plain C# object and is never written back into theasset, so one tree can drive several players at once.- Saves are keyed by generated ids. Rename a skill, reorder the tree,re-link a branch - existing saves keep working. Delete a skill from ashipped tree and its points are refunded rather than the save breaking.- Multi-rank skills, per-rank cost overrides, Any Parent and All Parentsunlock rules, hidden-until-available skills, and full respec that callsback into every skill in reverse dependency order.A UI YOU CAN USE, THEN REPLACEIt renders with no art at all: node views are generated from a styleasset, so you can see a tree running the moment it is authored. Drop inyour own prefab when you have one and nothing else changes.Drag to pan, scroll or pinch to zoom, three reveal modes, a details paneland a points readout. One menu item builds the whole thing into a scene.LEARN IT IN TEN MINUTESA playable demo where a hero auto-fights training dummies and every skillyou buy visibly changes the fight - nine example skill types, each writtento show off a different override. Plus a 31-page PDF manual and in-editordocumentation.Full C# source. No DLLs, no third-party dependencies, no subscriptions.Scripts: 47 C# source files, roughly 8,350 lines, across 4 assemblydefinitions (runtime, editor, demo, demo editor). Full source included,no DLLs.Dependencies: com.unity.ugui only, which ships with every Unity installand supplies both UnityEngine.UI and TextMeshPro. No third-party code.Unity version: 6000.5 or newer.Render pipelines: Built-in, URP, HDRP and custom SRPs. The packagecontains no shaders, materials, Volume profiles or Renderer Features, andadds nothing to your cameras. The UI is drawn on a Screen Space - Overlaycanvas, outside the render pipeline entirely.Input: works with the old Input Manager, the Input System package, orboth. No runtime script calls UnityEngine.Input; all pointer input goesthrough the EventSystem, including drag-pan, scroll-zoom and pinch.Platforms: all. No platform-specific code, no unsafe code, and no runtimereflection or code generation, so IL2CPP and AOT builds are fine. ThePlayerPrefs save backend works everywhere including WebGL; the optionalJSON file backend targets desktop and mobile.UI: uGUI. Labels are typed as Graphic, so legacy Text and TextMeshProboth drop straight into your own prefabs.Documentation: 31-page PDF manual, eight in-editor markdown guides, andXML documentation comments throughout the source.Demo: generated by a menu item on your machine rather than shipped as aprebuilt scene, so it always matches your project's input backend andrender pipeline.The C# source code and documentation in this package were written with AI assistance (Anthropic's Claude, via Claude Code), working from my specifications and building on my own earlier skill tree implementation. I directed the design, reviewed the code, and tested it in Unity.No AI-generated art, audio or other media is included. The demo's skill icons are drawn procedurally by an included C# script at build time, not produced by an image model.




