unity/유니티 Tools

유니티 폴더 + 파일까지 자동생성하기

rimugiri 2024. 7. 12. 04:51
728x90

 

 

Unity - 폴더 자동생성 패키지 제작하기

유니티에서 매번 프로젝트를 만들때 폴더를 일일이 생성해 주는것이 너무 귀찮아서 자주 사용하는 폴더를 자동으로 생성해주는 간단한 폴더가 있으면 좋겠다고 생각하여 만들어 보았다. 1. names

rimugiri.tistory.com

 

위 글에서 폴더까지 자동으로 생성하는 것을 다루었지만 기본적으로 프로젝트를 만들때 Manager단위의 파일들도 대부분 생성한다는 것을 깨닳아 파일도 처음부터 생성하게 만들고 싶어 코드를 수정하였다

 

using System.IO;
using UnityEditor;
using static System.IO.Directory;
using static System.IO.Path;
using static UnityEditor.AssetDatabase;
using static UnityEngine.Application;


namespace PKW
{
    public static class FastProjectMaker
    {
        // 옵션창에 PKW_Tool메뉴가 추가된다
        [MenuItem("PKW_Tool/FastProjectMaker")]
        public static void CreateDefaultProject()
        {
            string rootProjectName = "_Project";
            CreateDefaultFolders(rootProjectName);
            CreateDefaultScripts(rootProjectName);
            Refresh();
        }
        private static void CreateDefaultFolders(string root)
        {
            // 순서대로 root 디렉토리의 이름 그다음은 그안에 생성시킬 폴더들을 나열하면 된다
            CreateDirectorys(root, "1.Arts", "2.Scripts", "3.Prefabs", "4.Resources", "5.ScriptableObjects", "6.Scenes");
        }
        private static void CreateDirectorys(string root, params string[] dir)
        {
            string fullPath = Combine(dataPath, root);
            foreach (string newDirectory in dir)
            {
                CreateDirectory(Combine(fullPath, newDirectory));
            }

        }
        private static void CreateDefaultScripts(string root)
        {
            string scriptPath = Combine(dataPath, root, "2.Scripts");

            // 일반적인 스크립트 생성 방법
            // string testScrip = "TestScript";
            // CreateScript(scriptPath, testScrip, BaseTemplate);

            // Manager 스크립트 생성 방법
            string[] createManagerScripts = new string[]
            {
                "GameManager",
                "DataManager",
                "ResourceManager",
                "UIManager",
                "SoundManager",
                "EffectManager",
                "InputManager",
            };

            foreach (string scriptName in createManagerScripts)
            {
                CreateManagerScripts(scriptPath, scriptName, BaseTemplate);
            }
        }

        private static void CreateScript(string path, string scriptName, string template)
        {
            string fullPath = Combine(path, scriptName + ".cs");
            if (!File.Exists(fullPath))
            {
                File.WriteAllText(fullPath, template.Replace("#SCRIPTNAME#", scriptName));
            }
        }

        private static void CreateManagerScripts(string path, string scriptName, string template)
        {
            path = Combine(path, "Managers");
            if (!File.Exists(path))
            {
                CreateDirectory(path);
            }
            CreateScript(path, scriptName, BaseTemplate);
        }

        private static string BaseTemplate =
@"using UnityEngine;

public class #SCRIPTNAME# : MonoBehaviour
{
    void Init()
    {

    }
}";

    }
}

 

과정은 위 글과 같으니 코드만 수정해 주면 파일까지 자동생성이 완료 된다.

728x90