Book Image

Learning Design Patterns with Unity

By : Harrison Ferrone
Book Image

Learning Design Patterns with Unity

By: Harrison Ferrone

Overview of this book

Struggling to write maintainable and clean code for your Unity games? Look no further! Learning Design Patterns with Unity empowers you to harness the fullest potential of popular design patterns while building exciting Unity projects. Through hands-on game development, you'll master creational patterns like Prototype to efficiently spawn enemies and delve into behavioral patterns like Observer to create reactive game mechanics. As you progress, you'll also identify the negative impacts of bad architectural decisions and understand how to overcome them with simple but effective practices. By the end of this Unity 2023 book, the way you develop Unity games will change. You'll emerge not just as a more skilled Unity developer, but as a well-rounded software engineer equipped with industry-leading design patterns.
Table of Contents (23 chapters)
21
Other Books You May Enjoy
22
Index

Creating a generic singleton

Imagine you want to make the singleton more flexible, reusable, and maintainable. The previous implementation works, but it’s hardcoded into Manager.cs, which won’t help us if we want different classes to act like singletons. A better solution is to write a generic singleton that other classes can easily subclass.

We’re using a generic approach instead of subclassing the singleton class because we want the same design pattern implementations applied to different types. If we wanted the same functionality implemented in different ways across different singletons, subclass and traditional Object-oriented inheritance would be the way to go.

Figure 2.13 describes a generic singleton script that other manager classes can inherit from. Each subclassed manager has the same underlying Singleton structure, but each one can also add its own unique functionality and variables.

Diagram  Description automatically generated

Figure 2.13: Multiple manager classes...