I hate busywork. Whenever I add a new script to a Unity project, it comes with some requisite amount of whitespace cleanup, re-commenting, and other housekeeping I need to do just to get ready to start writing code. Luckily, that boilerplate code isn’t baked into Unity, it comes from a template that, get this, you can replace.
These files are easy enough to locate, with a little bit of digging. In Windows, they’re right alongside the Unity installation:
C:\Program Files (x86)\Unity\Editor\Data\Resources\ScriptTemplates
On Mac, it’s a little trickier. You’ve got to navigate to the Unity package in Finder, right-click and “show package contents,” then navigate to:
Contents/Resources/ScriptTemplates
And there they are! Feel free to open them up in a text editor, edit to your liking, and save (you’ll have to provide admin rights on Windows). For example, here’s my customized C# NewBehaviourScript:
// -------------------------------- // <copyright file="#SCRIPTNAME#.cs" company="Rumor Games"> // Copyright (C) Rumor Games, LLC. All rights reserved. // </copyright> // -------------------------------- using System.Collections; using UnityEngine; /// <summary> /// #SCRIPTNAME# class. /// </summary> public class #SCRIPTNAME# : MonoBehaviour { /// <summary> /// Initialize script state. /// </summary> internal void Start() { } /// <summary> /// Update script, called once per frame. /// </summary> internal void Update() { } }
You can even add entirely new templates.
For example, this template generates a new class with a parameterless constructor:
// -------------------------------- // <copyright file="#SCRIPTNAME#.cs" company="Rumor Games"> // Copyright (C) Rumor Games, LLC. All rights reserved. // </copyright> // -------------------------------- using System.Collections; using UnityEngine; /// <summary> /// #SCRIPTNAME# class. /// </summary> public class #SCRIPTNAME# { /// <summary> /// Initializes a new instance of the #SCRIPTNAME# class. /// </summary> public #SCRIPTNAME#() { } }
Unfortunately, since these files fall under the domain of Unity-installed files and not user files, these changes get stomped on every time you update Unity. It’s easy enough to set up a script to replace them, though, or at least to back up your custom templates to your cloud of choice and copy them in whenever you update.