When working in Unity, you don’t have to reinvent the wheel. It’s likely someone has already invented one for you. For every software design issue you encounter, a thousand developers have been there before. While you can’t always ask them directly for advice, you can learn from their decisions through design patterns.
A design pattern is a general solution to a common problem found in software engineering. These aren’t finished solutions that you can copy and paste into your code; instead, think of design patterns as extra tools in your toolbox. By understanding and using these patterns in a way that fits your project, you can produce cleaner code that’s easier to understand and faster to test and scale as your project grows.
This GitHub repository contains examples, in Unity, of design patterns in action that can inform your own game development.
These examples are taken from our e-book, Level up your code with game programming patterns. This 100-page guide explains the design patterns covered in this demo in more detail, as well as explaining the SOLID programming principles and concepts such as KISS and DRY.
Learn more in our how-to pages available here:
- Create modular and maintainable code with the Observer pattern
- Develop a modular, flexible codebase with the State programming pattern
- Use object pooling to boost performance of C# scripts in Unity
- Build a modular codebase with MVC and MVP programming patterns
- How to use the factory pattern for object creation at runtime
- Use the command pattern for flexible and extensible game systems
Or download the full e-book here.
Both internal and external Unity development experts contributed to the new e-book, especially Wilmer Lin at Unity Game Academy, who made significant contributions, both to the guide and the demo project.
Please keep in mind that the guide and these examples are based on subjective opinion; they are not recommendations that promise a particular outcome, but are examples only. A good code architectural solution is one that fits your needs and covers the majority of the day-to-day use cases in your game development. Our intention is for you to use the guide and examples as a starting point for creating your own guidelines.