Files
LuckerGame/Docs/patterns.md
2024-12-22 20:30:55 -08:00

1.3 KiB

Code Patterns

This document holds some of the code patterns I've arrived at when writing code in the project.

Implementing Components

OnStart()

Called when the component is enabled for the first time

Override this if your component is only going to be enabled once or if you do not have resources that need to be added or removed when its enabled / disabled.

If you do need to do cleanup and setup on enable / disable, override OnEnabled and OnDisabled instead.

Instantiating Components

Components don't have constructors, so you need another way of providing dependencies to them when they are instantiated elsewhere. There's probably a better way to do this, but for now we just configure them immediately after calling GameObject.AddComponent<T>():

var client = gameObject.AddComponent<Client>();
client.Connection = channel;

Shortly after this execution scope (I'm not sure exactly when) its OnStart() and OnEnabled() methods will be called, which contain the initialization logic.

As long as the component is configured correctly after it's been added, it should work correctly, but that raises the question: How do we manage the validation of properties in the Component implementation? I haven't found a satisfying answer yet.