Hello guys. I had some interviews and found out there are some technologies or tools that are most used in AA or AAA companies. I noticed them before but I never thought they are useful. Let me share some of the titles: 1- zenject 2- uniRx 3- Unitask 4- MVC /MVP/ MVVM 5- Scriptable Objects I just want to ask you what are the other most used technology in big companies. for example, for MVVM I need good data binding tools but I don't know how the big companies do that. I know that some of them make it themselves but if you know about the technology or any most used tool, let us know and please mention them.
We just use ScriptableObjects. The only concern is reasoning how a shared ScriptableObject will be serialized when you divide your content up for late delivery using something like Addressables. Zenject is a nightmare in Unity. We tried it and it was a complete disaster to every common workflow. The main reason Zenject caused us problems is because the code is not the application. Unity is the application: https://forum.unity.com/threads/res...-problem-when-using-ioc.1283879/#post-8140583
Dependency injection can be considered a best practice. Sadly Unity itself has nothing to offer in this regard. Instead you can fiddle with the dependencies in the editor and/or old school in your code. If you want to use DI it is not that advisable to use one of the C# DI frameworks out there because they do not include the Unity specific part, so you had to put much additional effort into the DI framework to be really useful. But here comes Zenject - a Unity specific DI framework. But as Kurt-Dekker states they had bad experiences. Because by using Zenject dependencies are defined in code, but they wanted to define the dependencies in Unity. Thats a problem with Zenject. An approach would have been implementing some editor extensions to configure and manage the dependencies in the Unity editor for Zenject. But this means additional effort and may not work as desired for their workflow. I personally use Zenject in my game project and I am mostly enthused about it because it helps me organizing the dependencies in a consistent and easy to manage way. But I am a coder, so sure I love manging dependencies in code. I find it the most important technology to use aside from Unity itself. I also totally understand that Zenject in general is on the list above. It simply helps developing a clean coded and structured game but it is not an axiomatic prerequisite.
TOTALLY disagree. Make a special "testing" scene or "debug" scene or whatever, leave it turned off until you need it. Done. OR.. use two different ScriptableObjects: one for testing, one for release OR... have a config file that drives behaviours of singletons and other service providers.
You don't need a framework for dependency injection if you don't want to have to learn one. In fact it's possible that you've been doing it thinking that it was too simple a concept to have a name. At least that's how it was for me. http://www.jamesshore.com/v2/blog/2006/dependency-injection-demystified
agreed, personally i do DI in most of my work both games and general programming but find DI frameworks just complicate things and make the flow harder to follow