È possibile trovare i modelli di script per la generazione automatica del codice nella cartella di installazione di Unity. Trovo i modelli in "Unity / Editor / Data / Resources / ScriptTemplates" , mentre altre fonti lo hanno trovato in "Unity / Editor / Data / Resources" .
I modelli UnityScript e C # generici sono identificati rispettivamente come file "82-Javascript-NewBehaviourScript.js.txt" e "81-C # Script-NewBehaviourScript.cs.txt" . È possibile modificare direttamente questi file per cambiare il modo in cui Unity genera automaticamente lo script.
Puoi anche includere modelli aggiuntivi, che appariranno quando selezioni "Crea" dalla finestra "Progetto" . I modelli non sembrano richiedere una numerazione univoca e utilizzano la stringa iniziale per determinare la gerarchia dei menu, dove "__" indica un sottomenu. Ad esempio, avere un file chiamato "81-C # Script__Editor Script-NewBehaviourScript.cs.txt" ti darà un ulteriore menu "Script C #" , con l'opzione secondaria per creare uno "Script Editor" usando questo modello.
Evitare Non rinominare i modelli originali; questi sono usati più direttamente dal motore. Ad esempio, rinominare "81-C # Script-NewBehaviourScript.cs.txt" ti impedirà di aggiungere nuovi script C # come componenti, direttamente tramite la finestra di ispezione.
Di seguito è riportato il mio esempio, anche se dimostra pratiche particolari a cui sono maggiormente abituato. Ad esempio, preferisco avere il mio script dell'editor personalizzato nello stesso file della classe di destinazione, quindi lo incapsulo in #if UNITY_EDITOR .. #endif
, invece di inserirlo in una cartella dell'editor generica "non compilare in build".
Non sono sicuro se sia persino possibile fornire il contesto di uno spazio dei nomi personalizzato; Uso semplicemente "NAMESPACE", in quanto ciò mi consente di fornire la corretta post-creazione dello spazio dei nomi, utilizzando la funzione "trova..replace all" incorporata comunemente.
Il template:
/* 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
}
Il risultato:
/* 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
}