Ejemplo n.º 1
0
        //----- 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);
        }
Ejemplo n.º 2
0
        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);
        }