Basic scripts for creating Unity games following MVC patterns. The concept is based on the article Unity with MVC: How to Level Up Your Game Development written by Eduardo Dias.
I've made some changes to fit my needs. Those are the scripts I use when starting a new Unity project. And here is how it's structured on the scene hierarchy:
On the root of "Scripts" folder you find the base scripts to link to those game objects of the screenshot above:
- Application (Application.cs)
- Model (ModelContainer.cs)
- View (ViewContainer.cs)
- Controller (ControllerContainer.cs)
The game objects "Model", "View", "Controller" are containers for any other scripts you create inheriting the MvcBehaviour class, which is mandatorily a model, a view or a controller.
Here is an example of how you would add controllers to the Controller Container:
Note that TimeController, DoorController, AlertController and InvestmentAreaBarsController are all derived from MvcBehaviour too. And those scripts are attached to their related game objects on scene - children of the Controller game object.
In summary, Models hold the data structure and current values, Views hold the references of game objects on scene and Controllers control how the objects will behave on scene, using the data from models and the references from views.
Now you might be asking: "If my game has more than one scene, do I need to crate a MVC structure in all scenes? If so, do I have to reinitialize the game objects everytime? Then, how to I keep the state of my game through the scenes?"
Yes, you need to create the same structure on all scenes, and yes, you lose the data from the scripts on your game objects.
That's where the GlobalStorage comes in. Check it out:
GlobalStorage - Unity3D Script to store persistent data in JSON format and watch them live on Inspector.
The MIT License
http://victor.mit-license.org