So I got a quick one for you unity gurus : If I have an object in a script and I want other scripts to access it, I always wonder what is the best way to do it : Public : My favorite, but also disliked by most programmers. I can give a value directly in the editor and when the game load it should be faster then doing a getcomponent on start/awake (form what I have read). I also can access it just by typing the name. The issue most people have with public variable is that anyone can modify it without validation. it,s bad practice. Public property : With this, you don't have the issue of lack of validation. In your get/set of property, you can add code to validate your data. Sadly, it won't shup up in the editor, and you will have to getcomponent on start. I know everyone will tell me to no use Public variable. But then should I initiate every property on the awake/start component of my object? Won't it be a bit slower then public variable? Also is there another way to add a variable that can be used by another script and still show up in the editor? P.S : If anything I say in my post is wrong, feel free to correct it.