Uploaded November 2025 | Updated September 2026, 16 hours ago
This video explores a powerful and expressive way to use C# generics to create clearer, safer, and more maintainable architecture inside Unity. We look at a modern pattern where a class takes its own derived type as a generic parameter, giving us stronger compile-time guarantees and more expressive APIs. Along the way, we build a small state machine to demonstrate how this pattern helps structure real gameplay systems without relying on fragile inheritance chains or downcasting. If you want to deepen your understanding of generics and apply them to cleaner Unity code, this walkthrough will give you practical techniques you can use immediately.
Note: This is also sometimes called Curiously Recurring Generic Pattern (CRGP) in C#
*Source code:* gist.github.com/adammyhre/747371bc14470f3b31fdbb62d758e9bd
Read More: blog.stephencleary.com/2022/09/modern-csharp-techniques-1-curiously-recurring-generic-pattern.html
zpbappi.com/curiously-recurring-template-pattern-in-csharp
Vote for the Channel: unity.com/awards
Want to support me? 😀
Buy me a coffee! ko-fi.com/adammyhre
🔔 Subscribe for more Unity Tutorials youtube.com/@git-amend
Discord: discord.gg/FDRZGQBBUC
#unity3d #gamedev #indiedev
▬ Contents of this video ▬▬▬▬▬▬▬▬▬▬
0:00 Understanding the Pattern
2:10 State Machine
5:48 Transitions
More Useful Code:
github.com/adammyhre?tab=repositories
Unity Utility Library: github.com/adammyhre/Unity-Utils
Lock Inspector Hotkey: gist.github.com/adammyhre/4754f731a93bf1cab0d1385ccfa23642
*Other Recommended Tools* _(Affiliate Links)_
Universal Animations and Modular Fantasy Outfits (ON SALE) - quaternius.itch.io
Eole Grass Shader - assetstore.unity.com/publishers/24904?aid=1101lw3sv
Wingman - assetstore.unity.com/packages/tools/utilities/wingman-your-inspector-s-best-friend-303181?aid=1101lw3sv
Favorites Window - assetstore.unity.com/packages/tools/utilities/favorites-window-123487?aid=1101lw3sv
Logwin - assetstore.unity.com/packages/tools/utilities/logwin-log-debug-values-tracker-149558?aid=1101lw3sv
TimeScale Toolbar - assetstore.unity.com/packages/tools/utilities/timescale-toolbar-291564?aid=1101lw3sv
Scene Notes - assetstore.unity.com/publishers/87819?aid=1101lw3sv
Beautify - assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/beautify-3-advanced-post-processing-233073?aid=1101lw3sv
Odin - assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041?aid=1101lw3sv?aid=1101lw3sv
Odin Validator - assetstore.unity.com/packages/tools/utilities/odin-validator-227861?aid=1101lw3sv
Hot Reload: assetstore.unity.com/packages/tools/utilities/hot-reload-edit-code-without-compiling-254358?aid=1101lw3sv
Better Hierarchy: assetstore.unity.com/packages/tools/utilities/better-hierarchy-272963?aid=1101lw3sv
Better Transform: assetstore.unity.com/packages/tools/utilities/better-transform-size-notes-global-local-workspace-child-parent--276554?aid=1101lw3sv
Better Mesh Filter: assetstore.unity.com/packages/tools/utilities/better-mesh-filter-266489?aid=1101lw3sv
Editor Console Pro: assetstore.unity.com/packages/tools/utilities/editor-console-pro-11889?aid=1101lw3sv
Any Object Finder: assetstore.unity.com/packages/tools/utilities/any-object-finder-286455?aid=1101lw3sv
Kybernetic Tools: assetstore.unity.com/publishers/16747?aid=1101lw3sv
Sisus Tools: assetstore.unity.com/publishers/41398?aid=1101lw3sv
Prime Tween - assetstore.unity.com/packages/tools/animation/primetween-high-performance-animations-and-sequences-2529607?aid=1101lw3s
Rabbit Logger - assetstore.unity.com/packages/tools/utilities/rabbit-logger-305396?aid=1101lw3s
*Follow me!*
https://linktr.ee/gitamend
This video explores a powerful and expressive way to use C# generics to create clearer, safer, and more maintainable architecture inside Unity. We look at a modern pattern where a class takes its own derived type as a generic parameter, giving us stronger compile-time guarantees and more expressive APIs. Along the way, we build a small state machine to demonstrate how this pattern helps structure real gameplay systems without relying on fragile inheritance chains or downcasting. If you want to deepen your understanding of generics and apply them to cleaner Unity code, this walkthrough will give you practical techniques you can use immediately.
Note: This is also sometimes called Curiously Recurring Generic Pattern (CRGP) in C#
*Source code:* gist.github.com/adammyhre/747371bc14470f3b31fdbb62d758e9bd
Read More: blog.stephencleary.com/2022/09/modern-csharp-techniques-1-curiously-recurring-generic-pattern.html
zpbappi.com/curiously-recurring-template-pattern-in-csharp
Vote for the Channel: unity.com/awards
Want to support me? 😀
Buy me a coffee! ko-fi.com/adammyhre
🔔 Subscribe for more Unity Tutorials youtube.com/@git-amend
Discord: discord.gg/FDRZGQBBUC
#unity3d #gamedev #indiedev
▬ Contents of this video ▬▬▬▬▬▬▬▬▬▬
0:00 Understanding the Pattern
2:10 State Machine
5:48 Transitions
More Useful Code:
github.com/adammyhre?tab=repositories
Unity Utility Library: github.com/adammyhre/Unity-Utils
Lock Inspector Hotkey: gist.github.com/adammyhre/4754f731a93bf1cab0d1385ccfa23642
*Other Recommended Tools* _(Affiliate Links)_
Universal Animations and Modular Fantasy Outfits (ON SALE) - quaternius.itch.io
Eole Grass Shader - assetstore.unity.com/publishers/24904?aid=1101lw3sv
Wingman - assetstore.unity.com/packages/tools/utilities/wingman-your-inspector-s-best-friend-303181?aid=1101lw3sv
Favorites Window - assetstore.unity.com/packages/tools/utilities/favorites-window-123487?aid=1101lw3sv
Logwin - assetstore.unity.com/packages/tools/utilities/logwin-log-debug-values-tracker-149558?aid=1101lw3sv
TimeScale Toolbar - assetstore.unity.com/packages/tools/utilities/timescale-toolbar-291564?aid=1101lw3sv
Scene Notes - assetstore.unity.com/publishers/87819?aid=1101lw3sv
Beautify - assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/beautify-3-advanced-post-processing-233073?aid=1101lw3sv
Odin - assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041?aid=1101lw3sv?aid=1101lw3sv
Odin Validator - assetstore.unity.com/packages/tools/utilities/odin-validator-227861?aid=1101lw3sv
Hot Reload: assetstore.unity.com/packages/tools/utilities/hot-reload-edit-code-without-compiling-254358?aid=1101lw3sv
Better Hierarchy: assetstore.unity.com/packages/tools/utilities/better-hierarchy-272963?aid=1101lw3sv
Better Transform: assetstore.unity.com/packages/tools/utilities/better-transform-size-notes-global-local-workspace-child-parent--276554?aid=1101lw3sv
Better Mesh Filter: assetstore.unity.com/packages/tools/utilities/better-mesh-filter-266489?aid=1101lw3sv
Editor Console Pro: assetstore.unity.com/packages/tools/utilities/editor-console-pro-11889?aid=1101lw3sv
Any Object Finder: assetstore.unity.com/packages/tools/utilities/any-object-finder-286455?aid=1101lw3sv
Kybernetic Tools: assetstore.unity.com/publishers/16747?aid=1101lw3sv
Sisus Tools: assetstore.unity.com/publishers/41398?aid=1101lw3sv
Prime Tween - assetstore.unity.com/packages/tools/animation/primetween-high-performance-animations-and-sequences-2529607?aid=1101lw3s
Rabbit Logger - assetstore.unity.com/packages/tools/utilities/rabbit-logger-305396?aid=1101lw3s
*Follow me!*
https://linktr.ee/gitamend










