Notifications
Article
Dodawanie szablonów skryptów z pomocą metody ProjectWindowUtil.CreateScriptAssetFromTemplateFile() [2019.3]
Updated 2 months ago
29
0
Dodawanie szablonów skryptów z pomocą metody ProjectWindowUtil.CreateScriptAssetFromTemplateFile()

Spis treści

  1. Jak było wcześniej
  2. Nowe możliwości - metoda CreateScriptAssetFromTemplateFile() - Jak tworzymy szablony skryptów? - Jak tworzymy instancje szablonów?
  3. Podsumowanie

1. Jak było wcześniej?

We wcześniejszych wersjach Unity mogliśmy dodawać skrypty tylko za pomocą odpowiednio zdefiniowanych plików tekstowych, które umieszczaliśmy w specjalnym folderze ScriptTemplates. Więcej o tym mówiłem w tym odcinku.
Na temat tego folderu dodam, ze jeśli dodamy folder o nazwie "ScriptTemplates" do folderu Assets to będziemy mogli tworzyć szablony skryptów lokalnie. (czyli szablony będą widoczne tylko w odrębie projektu w którym się znajdują)
Wystarczy dodać odpowiednio zdefiniowany szablon do folderu ScriptTemplates
A przy następnym uruchomieniu edytora będziemy mogli utworzyć skrypt z szablonu.
Zasady tworzenia szablonów są takie same jak w przypadku globalnego folderu ScriptTemplates.

2. Nowe możliwości - metoda CreateScriptAssetFromTemplateFile()


W Unity 2019.2 została udostępniona metoda ProjectWindowUtil.CreateScriptAssetFromTemplateFile()
Ta metoda pozwala na tworzenie skryptów z menu na bazie przygotowanych szablonów.

Jak tworzymy szablony skryptów?

Najpierw musimy utworzyć lokacje w której będziemy przechowywać szablony skryptów. Ja utworzyłem folder Templates w folderze Editor jak na poniższym rysunku.
W folderze Templates tworzę szablon skryptu.
Utworzony skrypt musi mieć rozszerzenie .txt. Czyli pełna nazwa powyższego pliku z rozszerzeniem to...
Teraz definiujemy zawartość szablonu:
using UnityEngine; [CreateAssetMenu(menuName = "ScriptableObject/#SCRIPTNAME#", fileName = "New #SCRIPTNAME#", order = 0)] public class #SCRIPTNAME# : ScriptableObject{}
Zawartość szablonu definiujemy podobnie jak w przypadku wbudowanych szablonów. Jedyna różnica polega na zdefiniowaniu nazwy szablonu. W tym przypadku nazwa szablonu nie musi posiadać w sobie ścieżki do opcji w menu, która tworzy instancje szablonu.

Jak tworzymy instancje szablonów?

Teraz tworzymy skrypt do wczytywania szablonów skryptów. Tworzę skrypt o nazwie ScriptTemplateCreator w specjalnym folderze Editor.
Tak wygląda jego zawartość:
using UnityEditor; public static class ScriptTemplateCreator { //z pomocą tego atrybutu definiujemy gdzie w menu będzie znajdować się opcja do tworzenia szablonu [MenuItem(itemName: "Assets/Create/OwnTemplates/ScriptableObject", isValidateFunction: false, priority: 0)] public static void CreateScriptableObjectFromTemplate() { // ta metoda pozwala na tworzenie skryptów na bazie szablonów ProjectWindowUtil.CreateScriptAssetFromTemplateFile( // podajemy ścieżkę do szablonu, // ścieżka musi zawierać rozszerzenie pliku, czyli w tym przypadku .txt templatePath:$"Assets/Editor/Templates/ScriptableObjectTemplate.cs.txt", // definiujemy defaultową nazwę nowo utworzonego pliku i jego rozszerzenie defaultNewFileName:"NewScriptableObject.cs"); } }
Metoda ProjectWindowUtil.CreateScriptAssetFromTemplateFile() przyjmuje dwa parametry. - templatePath - dodajemy ścieżkę do szablonu względem folderu Assets wraz z rozszerzeniem pliku - defaultNewFileName - podajemy nazwę i rozszerzenie nowo utworzonego pliku.
Gdy teraz wybierzemy z menu Assets->Create->OwnTemplates->ScriptableObject.
To zostanie utworzone instancja skryptu na bazie szablonu:

3. Podsumowanie

Poznaliście nowy wygodny sposób tworzenia własnych szablonów skryptów. Jak będę mieć więcej czasu to dokończę i wrzucę tu jeszcze moje szablony skryptów.
Więcej na temat klasy ProjectWindowUtil możecie znaleźć w tej poniższej książce w rozdziale 11.
Książka Keigo Ando o rozszerzeniach edytora
Tags:
Rafał Tadajewski
I haven't duck. I took dino. - Programmer
13
Comments