Lorsque vous créez un script via l'éditeur Unity, il génère un script avec du code pré-formaté.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GenericClass : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
Lorsque je crée un script, je suis généralement assuré d'utiliser du code supplémentaire, tel qu'un espace de noms ou un éditeur personnalisé. De plus, je supprime presque toujours le contenu du script généré automatiquement. Existe-t-il un moyen de modifier le code automatique généré par Unity?
Réponses:
De plus, vous pouvez également
Ajoutez un script d'éditeur dans le dossier Assets / Editor qui s'abonne à l'
OnWillCreateAsset
endroit où vous pouvez analyser la sortie et la modifier. Par exemple, un script qui insérerait automatiquement un espace de noms pourrait ressembler à ceci:Insérez vos propres séquences de contrôle dans les modèles pour les remplacer facilement
OnWillCreateAsset
, par exempleAjoutez plus de modèles au dossier de modèles, par exemple un pour le modèle Singleton - Unity n'est pas limité à un seul modèle de script.
Les extraits de code de Visual Studio sont un moyen de personnaliser la création de nouveaux scripts (... et encore plus - de nouvelles parties de script). Par exemple, un extrait de code privé
SerializeField
peut être utile. Après l'importationprivateField.snippet
:dans Outils / Gestionnaire d'extraits de code / Mes extraits de code, vous pouvez simplement taper le double onglet "pf" et saisir le nom du champ. Par exemple:
Des extraits de code pour des séquences plus longues souvent répétées, par exemple une propriété en lecture seule appuyée par un
SerializeField
champ, seraient encore plus pratiques .Visual studio propose également un outil de génération de code très puissant, les modèles de texte T4 (EF utilise T4), bien que je trouve personnellement l'utilisation pratique des projets Unity douteuse - ils sont exagérés, assez compliqués et la compilation du projet dépendra probablement de Visual Studio.
la source
Path.GetFileWithoutExtension
. Il me dit qu'il tente d'accéder à unMonoBehaviour
, ce qui semble étrange. J'inclus l'espace de nomsusing Path = System.IO.Path.GetFileWithoutExtension
et je perdsPath
tous ensemble. Au final, j'ai dû franchir complètement la ligne, elle-même (.Contains("class " + System.IO.Path.GetFileNameWithoutExtension(assetPath)));
).string
/File.Write
produire LF uniquement avec BOM. Pour autant que je sache, '\ n' devrait être juste LF, vous pouvez également essayer à laEnvironment.Newline
place, mais ce devrait être CRLF. Il peut également y avoir une option pour utiliser les hooks git si tout le reste échoue. La nomenclature devrait être facile avec cette question de stackoverflow .Vous pouvez trouver les modèles de script pour générer automatiquement du code dans votre dossier d'installation Unity. Je trouve les modèles sous "Unity / Editor / Data / Resources / ScriptTemplates" , tandis que d' autres sources l' ont trouvé sous "Unity / Editor / Data / Resources" .
Les modèles UnityScript et C # génériques sont identifiés comme étant les fichiers "82-Javascript-NewBehaviourScript.js.txt" et "81-C # Script-NewBehaviourScript.cs.txt" , respectivement. Vous pouvez modifier directement ces fichiers pour changer la façon dont Unity génère automatiquement le script.
Vous pouvez également inclure des modèles supplémentaires, qui apparaîtront lorsque vous sélectionnez "Créer" dans la fenêtre "Projet" . Les modèles ne semblent pas nécessiter une numérotation unique et utilisent la chaîne initiale pour déterminer la hiérarchie du menu, où «__» désigne un sous-menu. Par exemple, avoir un fichier nommé "81-C # Script__Editor Script-NewBehaviourScript.cs.txt" vous donnera un menu supplémentaire " C # Script" , avec l'option secondaire pour créer un "Script d'édition" en utilisant ce modèle.
Ne renommez pas les modèles d'origine; ceux-ci sont utilisés plus directement par le moteur. Par exemple, renommer "81-C # Script-NewBehaviourScript.cs.txt" vous empêchera d'ajouter de nouveaux scripts C # en tant que composants, directement via l'inspecteur.
Voici mon propre exemple, bien qu'il montre des pratiques particulières auxquelles je suis le plus habitué. Par exemple, je préfère avoir mon script d'éditeur personnalisé dans le même fichier que la classe cible, donc je l'encapsule dans
#if UNITY_EDITOR .. #endif
, au lieu de le placer dans un dossier d'éditeur générique "ne pas compiler dans la construction".Je ne sais pas s'il est même possible de fournir le contexte d'un espace de noms personnalisé; J'utilise simplement "NAMESPACE", car cela me permet de fournir le bon espace de noms après la création, en utilisant la fonction "find..replace all" généralement intégrée.
Le gabarit:
Le résultat:
la source