Unity Tip: Don’t Always Use Update

The Update function in MonoBehaviour is where you’ll end up running a lot of you game code. However, it’s always worth asking yourself does the code need to be running every frame? Some parts you can get away with running a few times a second or event every few seconds. Every time you’re building something into Update, understand if this is where it must be.
Level of detail code is a very obvious one that you might only want to update every second or so. I’ll usually run InvokeRepeating for that.

Unity Tip: Choose a Project Before Opening Unity

If you’re switching between projects or planning to create a new one when starting Unity, it can take a while for it to warm up and allow you to do this. One way to open another project is to find a scene in that project and open Unity from that. Of course that’s not as quick as clicking on the Unity icon on your desktop (you do have a shortcut on your desktop right???) as you have to find a scene buried within the needed project.
If you press and hold Alt when you open Unity it will open the projects dialog instead of the last opened project. here you can select a different project or create a new one!

Unity Tip: Agree on Scale

The first thing you need to do on a new project with modelers is to agree on a scale. This is especially important if there are multiple modelers on the project, you don’t want them all producing content at different scales! The best way to determine scale is to ask each modeler to produce a one unit cube as they see it. Bring the cube into Unity and compare it to the primitive Unity uses (Menu > GameObject > Create Other > Cube). The Unity cube is one unit squared and one unit is one meter.
Why is it important that we stick to Unity unit = 1 meter? For starters, it just makes sense right? When you code anything in your game, it’s easy to move something 1m/s.
Also, if there is any physics in your game, you’re going to need to stick to this concept. The physics simulation is based on 1 unit = 1 meter and any other scale is going to give you a physically weird world. Things will fall too quick or slow.

Unity Tip: Where are the Editor Logs?

There’s going to be a point when you crash Unity or your built game. It might just be an instability issue, it might be a loop in your code that can go awry. Sometimes you have no idea and that’s when you need to dig through the log files.
All the information you need is on this page to find them.
The quickest way to the editor log is to use the button located top right in the Unity console window. You can also find things like build size breakdowns after you have built your project. It makes tracking down inappropriately massive assets in your build easy.
Log files also contain all your Debug.Log outputs which can be very useful if you’ve compiled and built your game and it’s now crashing on another machine.

Unity Tip: Frame Skip Button

2014-03-31 20_06_10-Unity - level1.unity - TestB - PC, Mac & Linux Standalone_

It’s the last one of these happy little fellows and it can come in quite useful. I must admit I don’t think I ever used it for the first year using Unity but it came in handy when I needed to pinpoint a frame and what was actually happening in it. All it does is advance your game, frame by frame, in pause mode. So keep an eye out for when it will come in handy…

Unity Tip: Use Empty GameObjects as Hierarchy Folders

It’s very easy for a scene to become very cluttered, especially in the hierarchy where you can end up with thousands of GameObjects. The simple way to control this though is to create empty GameObjects that just hold the children. It can keep a large bulky project clean and hide a lot of assets and GameObjects.
Remember to make sure they have their origin set to world zero so things make sense though. Do this before nesting objects so their position isn’t affected by moving the parent to world zero. Unity will place newly created GameObjects where to scene editor camera is so they end up being in arbitrary places. After nesting three or four times, the local position of the children could be anything. It might not matter at first, but it could trip you up later on.

Unity Tip: Hold Alt to Mass Collapse/Expand GUI Hierarchies

2014-03-29 18_51_31-Unity - On Rails Shooter.unity - Camera Path 3 - PC, Mac & Linux Standalone

You have a complex scene with many nested GameObjects and then you accidentally click on that small pebble in your scene making your hierarchy explode to reveal that pebble. Fear not! You can alt click the top level parent arrow to collapse every collapsible child GameObject and return your hierarchy to normality.
It also works the other way around, allowing you to expand every nested GameObject instead of only the current selected one.

Unity Tip: Don’t Use Public to Show Fields in the Unity Editor

If you want to see a variable appear in the Unity editor, you don’t need to make it public. You can use [SerializeField] / @SerializeField to do this and keep your variable private.

private var _myPrivateString = "You can see this in the Unity Editor";
private string _myPrivateString = "You can also see this in the Unity Editor";

SerializeField is also important if you’re encapsulating properties in scripts… Properties don’t appear in the Unity editor by default, but if you’re using custom editors, you’ll soon slip on this problem…

private bool _hiddenValueA = false;
private bool _hiddenValueB = false;

//_hiddenValueA IS NOT serialised so when you press play it resets!
public bool valueA
    get{return _hiddenValueA;}
    set{_hiddenValueA = value;}

//_hiddenValueB IS serialised so when you press play it is saved.
public bool valueB
    get{return _hiddenValueB;}
    set{_hiddenValueB = value;}