Learning a new skill always requires you to make mistakes. But to learn it quickly you need to correct those mistakes and make sure they are not repeated. Unity is very powerful tool but often beginners find themselves making the same mistakes. Here are a few beginners’ mistakes to avoid in Unity.
Mind the spelling of predefined functions
Start() is not the same function as start()
Don’t be shy to look up the Unity document to see the correct spelling of the function you are going to use.
Another common misspelled function is OnCollisionEnter(), remember the O,C and E are in capital letters.
The problem with this mistake is you will never see an error and it will be difficult to find out why your code is not working.
Two Non physics object cannot collide
Ever wonder why your OnCollisionEnter() function is not working even if the code is right?
That’s because two non-physics object’s collision is not detected by Unity.
You need to add a Rigidbody component to atleast one gameobject for the collision to be detected.
Your collision Bible
Null reference error
Most beginners follow some tutorial and copy the code exactly and run the game only to see a Null reference error.
This happens when your script is referencing a gameobject that is not assigned.
You must have added a code like this
public GameObject player;
After this you need to drag and drop the player to the script in the inspector window. If you forget that, you will get a null reference error.
Looking for errors
Most beginner try to look for errors inside the code editor. You need to understand that the code editor can only show you errors related to syntax.
Unity editor’s console window shows more details on what is wrong with your code. The best way to find the errors is to save the code and go to Unity editor’s console window.
If you are having a runtime error and not able to figure out why things are not working use code breaks and Debug.Log statement to identify the mistakes.
Awake works even if the script is disables
Yes, you read it right. The Awake function of your script will be called even if the script component is disabled in your gameobject.
You need to keep this in mind before you use the Awake function.
When you reference or assign some static variable in Awake it might create a problem that will be difficult to diagnose.