คุณสามารถค้นหาเทมเพลตสคริปต์สำหรับสร้างรหัสอัตโนมัติในโฟลเดอร์การติดตั้ง Unity ของคุณ ฉันพบแม่แบบภายใต้"ความสามัคคี / บรรณาธิการ / ข้อมูล / ทรัพยากรธรรมชาติ / ScriptTemplates"ขณะที่แหล่งอื่น ๆได้พบว่าภายใต้"ความสามัคคี / บรรณาธิการ / ข้อมูล / ทรัพยากร"
แม่แบบ 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
แทนที่จะวางไว้ในโฟลเดอร์เอดิเตอร์ "ห้ามคอมไพล์ใน build" ทั่วไป
ฉันไม่แน่ใจว่าเป็นไปได้หรือไม่ที่จะกำหนดบริบทของเนมสเปซที่กำหนดเอง ฉันใช้ "NAMESPACE" เพียงอย่างเดียวเพราะมันช่วยให้ฉันสามารถสร้างเนมสเปซที่ถูกต้องได้โดยใช้ฟังก์ชั่น "find..replace all" ทั่วไปที่ inbuilt
แม่แบบ:
/* 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
}