コードを自動生成するためのスクリプトテンプレートは、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#スクリプト」メニューが追加されます。
元のテンプレートの名前を変更しないでください。これらはエンジンにより直接使用されます。たとえば、「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
}