Consider a playable build, no matter how simple, as a save point. It is a milestone along the way toward the finish line, and one that, if you were forced to abandon your game tomorrow, you would be able to return to—and present to the world as some sort of finished product. A playable build is an asset worth keeping around, backing up, and retaining as a safety net for yourself.
Reaching this stage can take some time, but the sooner you can have this up and running (even without any real gameplay or levels), the sooner you are able to start production.
When you code a custom component for a game object, any public properties are visible and tweakable from the Unity editor’s Inspector window.
You can take advantage of this by including a public string variable that contains debug information, a value that you can change easily over the course of the game. This serves as a quick-and-dirty real-time update when you don't want to fill the debug console log with thousands of lines of text.
For example, you might create a public string to hold the AI state of a bot, allowing you to watch it during play in the inspector, rather than implementing a new widget or custom inspector in a whole new script file.
Complex prefabs may have all sorts of things that need to be updated based on events triggered in the code when properties change. You don’t want to have to re-run the game every time you make a change to see the result.
The easy solution for when you want to run some code in reaction to changes is to listen for the OnValidate() event. Here you can “refresh” the object as needed.
Create a function with this name in a component on the object in question and any time you change a value in the inspector (for example, health), you can run any code required. For example, you could automatically change the color of a healthbar sprite based on the number you typed, even though the game is not running.
This technique also helps avoid the need for “custom inspectors” just to implement a “recalculate stuff” button, saving much time and code.
As a project grows in size, it becomes more important to hide some of the details from yourself so that you're not inundated with too much on the screen while working.
By selecting groups of objects and giving them a tag or setting their layer in the Inspector window, you'll be able to quickly view or select objects of only a certain type in game, even while it is running.
Ensuring that your game objects in every scene are assigned a tag or layer can also improve the efficiency of collision detection and click event recasting (if the Collision Flags are set properly to ignore objects you know will never need to be checked).
To read all my tips on how to work faster, code faster, and make art faster, download this free eBook - Game Jamming in Unity: Tips and Tricks to Work Faster.
Christer Kaitila has been a freelance game dev since 1993. He has shipped dozens of games, and mentors at a game development club. He created One Game a Month and has published two other gamedev books.