Możesz znaleźć szablony skryptów do automatycznego generowania kodu w folderze instalacyjnym Unity. Znajduję szablony w „Unity / Editor / Data / Resources / ScriptTemplates” , podczas gdy inne źródła znalazły go w „Unity / Editor / Data / Resources” .
Ogólne szablony UnityScript i C # są identyfikowane odpowiednio jako pliki „82-JavaScript-NewBehaviourScript.js.txt” i „81-C # Script-NewBehaviourScript.cs.txt” . Możesz bezpośrednio edytować te pliki, aby zmienić sposób, w jaki Unity automatycznie generuje skrypt.
Możesz także dołączyć dodatkowe szablony, które pojawią się po wybraniu „Utwórz” w oknie „Projekt” . Wygląda na to, że szablony nie wymagają unikalnej numeracji i używają początkowego ciągu, aby określić hierarchię menu, gdzie „__” oznacza podmenu. Na przykład posiadanie pliku o nazwie „81-C # Script__Editor Script-NewBehaviourScript.cs.txt” zapewni dodatkowe menu „ C # Script” z opcją podrzędną umożliwiającą utworzenie „Script Editor” przy użyciu tego szablonu.
Czy nie zmieniać nazwy oryginalne szablony; są one wykorzystywane bardziej bezpośrednio przez silnik. Na przykład zmiana nazwy „81-C # Script-NewBehaviourScript.cs.txt” uniemożliwi dodawanie nowych skryptów C # jako składników bezpośrednio przez inspektora.
Poniżej znajduje się mój przykład, chociaż pokazuje on szczególne praktyki, do których jestem najbardziej przyzwyczajony. Na przykład wolę mieć niestandardowy skrypt edytora w tym samym pliku, co klasa docelowa, więc go kapsułkuję#if UNITY_EDITOR .. #endif
, zamiast umieszczać w ogólnym folderze edytora „nie kompiluj w kompilacji”.
Nie jestem pewien, czy możliwe jest podanie kontekstu niestandardowej przestrzeni nazw; Po prostu używam „NAMESPACE”, ponieważ pozwala mi to zapewnić poprawną przestrzeń nazw po utworzeniu, używając powszechnie wbudowanej funkcji „find..replace all”.
Szablon:
/* 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
}
Wyjście:
/* 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
}