您可以在Unity安装文件夹中找到用于自动生成代码的脚本模板。我在“ Unity / Editor / Data / Resources / ScriptTemplates”下找到模板,而其他来源在“ Unity / Editor / Data / Resources”下找到了模板。
通用UnityScript和C#模板分别标识为文件“ 82-Javascript-NewBehaviourScript.js.txt”和“ 81-C#Script-NewBehaviourScript.cs.txt”。您可以直接编辑这些文件,以更改Unity自动生成脚本的方式。
您还可以包括其他模板,这些模板将在您从“项目”窗口中选择“创建”时出现。模板似乎不需要唯一编号,而是使用初始字符串来确定菜单层次结构,其中“ __”表示子菜单。例如,拥有一个名为“ 81-C#Script__Editor Script-NewBehaviourScript.cs.txt”的文件,将为您提供一个额外的“ C#Script”菜单,并带有使用该模板创建“ Editor Script”的子选项。
不要不修改原有的模板; 这些由引擎直接使用。例如,重命名“ 81-C#Script-NewBehaviourScript.cs.txt”将阻止您直接通过检查器添加新的C#脚本作为组件。
下面是我自己的示例,尽管它演示了我最习惯的特定实践。例如,我更喜欢将自定义编辑器脚本与目标类放在同一文件中,因此我将其封装在中#if UNITY_EDITOR .. #endif
,而不是将其放置在通用的“请勿在构建中编译”编辑器文件夹中。
我不确定是否有可能提供自定义名称空间的上下文。我只使用“ NAMESPACE”,因为这使我可以使用常用的“ find..replace all”功能提供正确的名称空间创建后的功能。
模板:
/* Created by Gnemlock */
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace NAMESPACE
{
public class #SCRIPTNAME# : MonoBehaviour
{
/// <summary>This method will be called at the start of each frame where this
/// instance of <see cref="NAMESPACE.#SCRIPTNAME#"/> is enabled.</summary>
void Update ()
{
#NOTRIM#
}
}
}
namespace NAMESPACE.UTILITY
{
#if UNITY_EDITOR
[CustomEditor(typeof(#SCRIPTNAME#))] public class #SCRIPTNAME#Editor : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
#SCRIPTNAME# s#SCRIPTNAME# = target as #SCRIPTNAME#;
}
}
#endif
}
输出:
/* Created by Gnemlock */
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace MyNamespace
{
public class UpdatedClass : MonoBehaviour
{
/// <summary>This method will be called at the start of each frame where this
/// instance of <see cref="MyNamespace.UpdatedClass"/> is enabled.</summary>
void Update ()
{
}
}
}
namespace MyNamespace.UTILITY
{
#if UNITY_EDITOR
[CustomEditor(typeof(UpdatedClass))] public class UpdatedClassEditor : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
UpdatedClass sUpdatedClass = target as UpdatedClass;
}
}
#endif
}