Unity genel olarak 3D pazarında iken son bir kaç yıldır 2D oyunlara yöneldi. Unreal başlangıçta 2D oyun pazarındayken kendini daha çok 3D doğru yönlendiriyor.
Here's a strategy that can guide you in when to use instances, Prefabs and ScriptableObjects:
Do you need something only once? Create a Prefab, then instantiate.
Do you need something multiple times, possibly with some instance-specific modifications? Then you can create a Prefab, instantiate it, and override some settings.
Do you want to ensure the same setting across multiple instances? Then create a ScriptableObject and source data from there instead.
There are a number of different types of responsibilities in these classes–game logic, input handling, physics simulations, presentations and more. Here are ways to create those smaller parts:
The general game logic, input handling, physics simulation and presentation could reside within MonoBehaviors, ScriptableObjects or raw C# classes.
For exposing parameters in the Inspector, MonoBehaviors or ScriptableObjects can be used.
Engine event handlers, and the management of a GameObject’s lifetime, need to reside within MonoBehaviors.
Unity de dependency Injection çözümü olan Extenject (eski adıyla Zenject) ileri seviye de tasarım geliştirmek için ilgilenmeniz gereken çözümlerden..