I was teaching one of my training courses when one of the students Unity Editors’ crashed and they lost a fair bit of work. It was at that point I thought, hmm…there really aught to be a form of an auto save system for Unity. I mean Unreal Engine 4 has it after all. I looked at what was available and there is a script on the Unity Wiki that does it, but I felt like it wasn’t flexible enough. So I sat down one evening and decided to actually make it. I surely would benefit more people than just my students and myself I would hope.
Scriptable Objects have been around in Unity since 2012 with the release of Unity 4…wow that was a long time ago! Anyway these are pretty handy and I’m surprised by the amount of people I come across that either don’t know what they are, or how to use them.
So in the Minesweeper game I launched recently, one of the small challenges was finding a way to optimise the Flood-Fill(-esque) algorithm I was using to uncover empty tiles across the grid and to find every tile that has a mine and explode / reveal it from in a wave out from the last mine if the player has won or from the mine that has already exploded. Its Flood-Fill(-esque) because floodfill was used for the empty tile reveal but not really for the end of game mines showing. It is however close enough of a topic to bundle in. There were 3 methods that were created / recreated…one of which is definitely not how to do Flood-Fill in a performance critical portion of the game…
IMGUI (Immediate Mode GUI) is Unitys legacy UI system that handles game UI pre-Unity 4.6 and editor UI. It generally consts of GUI.xyz and GUILayout.xyz calls within an OnGUI function. It could get cumbersome and very difficult to read. Especially if you have a lot of GUI controls.