//----- field ----- //----- property ----- //----- method ----- public static void Generate(string scriptPath) { var fields = new StringBuilder(); var all = new StringBuilder(); var tags = InternalEditorUtility.tags; for (var i = 0; i < tags.Length; ++i) { fields.Append("\t\t").AppendFormat("public const string {0} = \"{0}\";", tags[i]); all.Append("\t\t\t").AppendFormat("{0},", tags[i]); // 最終行は改行しない. if (i < tags.Length - 1) { fields.AppendLine(); all.AppendLine(); } } var script = ScriptTemplate; script = Regex.Replace(script, "#FIELDS#", fields.ToString()); script = Regex.Replace(script, "#ALL#", all.ToString()); script = script.FixLineEnd(); ScriptGenerateUtility.GenerateScript(scriptPath, @"Tags.cs", script); }
public static void Generate(string scriptPath) { var internalEditorUtilityType = typeof(InternalEditorUtility); var sortingLayerNamesProperty = internalEditorUtilityType.GetProperty("sortingLayerNames", BindingFlags.Static | BindingFlags.NonPublic); var sortingLayerNames = (string[])sortingLayerNamesProperty.GetValue(null, new object[0]); var sortingLayerUniqueIDsProperty = internalEditorUtilityType.GetProperty("sortingLayerUniqueIDs", BindingFlags.Static | BindingFlags.NonPublic); var sortingLayerUniqueIDs = (int[])sortingLayerUniqueIDsProperty.GetValue(null, new object[0]); var enums = new StringBuilder(); for (var i = 0; i < sortingLayerNames.Length; ++i) { enums.Append("\t\t").AppendFormat("{0} = {1},", sortingLayerNames[i], sortingLayerUniqueIDs[i]); // 最終行は改行しない. if (i < sortingLayerNames.Length - 1) { enums.AppendLine(); } } var script = ScriptTemplate; script = Regex.Replace(script, "#ENUMS#", enums.ToString()); script = script.FixLineEnd(); var folderPath = PathUtility.Combine(scriptPath, @"Constants"); ScriptGenerateUtility.GenerateScript(folderPath, @"SortingLayer.cs", script); }
//----- method ----- public static void Generate(string scriptPath) { var enums = new StringBuilder(); var layers = InternalEditorUtility.layers.Select(c => new { var = ScriptGenerateUtility.RemoveInvalidChars(c), val = LayerMask.NameToLayer(c) }).ToArray(); for (var i = 0; i < layers.Length; ++i) { enums.Append("\t\t").AppendFormat(@"{0} = {1},", layers[i].var, layers[i].val); // 最終行は改行しない. if (i < layers.Length - 1) { enums.AppendLine(); } } var script = ScriptTemplate; script = Regex.Replace(script, "#ENUMS#", enums.ToString()); script = script.FixLineEnd(); var folderPath = PathUtility.Combine(scriptPath, @"Constants"); ScriptGenerateUtility.GenerateScript(folderPath, @"Layers.cs", script); }
public static void Generate(string[] sceneFolders, string scriptPath) { var enums = new StringBuilder(); var contents = new StringBuilder(); // 最も一致率の高いパスから検索する為長さで並べ替え. var sceneFolderPaths = sceneFolders.OrderBy(x => x.Length); var scenes = EditorBuildSettings.scenes; for (var i = 0; i < scenes.Length; ++i) { var scene = scenes[i]; if (!scene.enabled) { continue; } var path = PathUtility.ConvertPathSeparator(scene.path); var enumName = string.Empty; foreach (var item in sceneFolderPaths) { var sceneFolderPath = item; // フォルダで'/'が付いていない時. if (AssetDatabase.IsValidFolder(sceneFolderPath) && sceneFolderPath.LastOrDefault() != PathUtility.PathSeparator) { sceneFolderPath = sceneFolderPath + PathUtility.PathSeparator; } // シーンフォルダまでのパスを除外したEnum名を作成. if (path.StartsWith(sceneFolderPath)) { var scenePath = path.SafeSubstring(sceneFolderPath.Length).Replace(PathUtility.PathSeparator, '_'); enumName = Path.GetFileNameWithoutExtension(scenePath); break; } } if (string.IsNullOrEmpty(enumName)) { enumName = Path.GetFileNameWithoutExtension(path); } enums.Append("\t\t").AppendFormat("{0},", enumName); contents.Append("\t\t\t").AppendFormat("{{ Scenes.{0}, \"{1}\" }},", enumName, path); // 最終行は改行しない. if (i < scenes.Length - 1) { enums.AppendLine(); contents.AppendLine(); } } var script = ScriptTemplate; script = Regex.Replace(script, "#ENUMS#", enums.ToString()); script = Regex.Replace(script, "#CONTENTS#", contents.ToString()); script = script.FixLineEnd(); var folderPath = PathUtility.Combine(scriptPath, @"Constants"); ScriptGenerateUtility.GenerateScript(folderPath, @"Scenes.cs", script); }