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

36 lines
1.3 KiB
Markdown

# 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>()`:
```csharp
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.