Wenn man häufiger Unity Projekte erstellt um kleine Tests zu machen oder doch große Proekte strukturieren möchte, ist es einfach mehr als nervend, wenn diese immer wieder per Hand angelegt werden müssen. Daher habe ich hier zwei kleine Scripte geschrieben, die ab sofort in allen meinen neuen Projekten zu finden sein werden. Mit Hilfer des Codes ist es so möglich einfach im EditorWindow Strukturen anzulegen in dem man beispielsweise schreibt „Scripts/SubFolder/SubFolder2“. Nun muss man nicht mehr tun als es zu speichern und Unity erstellt nun drei ineinander verschachtelte Ordner. Außerdem kann man diese Struktur als txt-Datei speichern und in anderen Projekten laden, modifizieren oder auch Ordner wieder löschen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; using System.Collections; public class DirectoryCreatorWindow : EditorWindow { private static List<string> _folderList = new List<string>(); [MenuItem("Window/DirectoryCreatorWindow")] static void Init() { // Get existing Open window or if none, make a new one: GetWindow(typeof(DirectoryCreatorWindow)); } private void OnGUI() { GUILayout.Label("DirectoryCreatorWindow", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); if (GUILayout.Button("Read File", GUILayout.Width(120), GUILayout.Height(25))) { if (DirectoryCreator.FileExists(DirectoryCreator.DirectorySetupFilePath)) _folderList = DirectoryCreator.ReadFile(DirectoryCreator.DirectorySetupFilePath); else DirectoryCreator.WriteFile(DirectoryCreator.DirectorySetupFilePath, null); } if (GUILayout.Button("Create Directories", GUILayout.Width(120), GUILayout.Height(25))) { if (_folderList.Count > 0) { // create the folders DirectoryCreator.CreateDirectory(_folderList); // create the folder setup file DirectoryCreator.CreateDirectorySetupFile(_folderList); } else { Debug.LogWarning("nothing to create"); } } if (GUILayout.Button("Save Directories", GUILayout.Width(120), GUILayout.Height(25))) { if (_folderList.Count > 0) { // create the folder setup file DirectoryCreator.CreateDirectorySetupFile(_folderList); } else { Debug.LogWarning("nothing to create"); } } if (GUILayout.Button("Clear List", GUILayout.Width(120), GUILayout.Height(25))) { _folderList.Clear(); } GUILayout.EndHorizontal(); GUILayout.Label("Example: Scripts/ScriptSubFolder/ScriptSubFolder2", GUILayout.Width(600), GUILayout.Height(25)); if (_folderList.Count > 0) { for (var i = 0; i < _folderList.Count; i++) { GUILayout.BeginHorizontal(); _folderList[i] = GUILayout.TextField(_folderList[i], GUILayout.Width(600), GUILayout.Height(25)); if (GUILayout.Button("Remove", GUILayout.Width(120), GUILayout.Height(25))) { DirectoryCreator.DeleteDirectory(_folderList[i]); _folderList.Remove(_folderList[i]); DirectoryCreator.CreateDirectorySetupFile(_folderList); } GUILayout.EndHorizontal(); } } if (GUILayout.Button("Add new Entry", GUILayout.Width(100), GUILayout.Height(25))) { AddMember(""); } } private static void AddMember(string entry) { if (!_folderList.Contains(entry)) { _folderList.Add(entry); } } } |