Skip to content

Initialize Project Script

mika edited this page Apr 5, 2024 · 5 revisions

You can use custom project initialization scripts (these are copied into New Project and executed at first launch).

Quick Start

Customization Guide

  • If you want to make your own init script, you can modify my base script https://github.com/unitycoder/UnityInitializeProject/blob/main/Assets/Editor/InitializeProject.cs
  • You can assign your new local InitializeProject.cs location in that field or add online hosted script URL (and press Fetch to download it)
  • NOTE: if you use your own scripts, make sure the NameSpace is "UnityLauncherProTools", Class is "InitializeProject", and Method is "Init"
  • You can assign your commonly used .unitypackages in the Init Script window (Click Select Assets). These values are saved into EditorPrefs

EXAMPLE SCRIPT (creates initial folders for new project)

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;

namespace UnityLauncherProTools
{
    public class InitializeProject
    {
        // settings
        static string[] folders = new string[] { "Fonts", "Materials", "Models", "Prefabs", "Scenes", "Scripts", "Shaders", "Sounds", "Textures" };

        static string assetsFolder;

        [MenuItem("Tools/Initialize Project")]
        public static void Init()
        {
            assetsFolder = Application.dataPath;

            CreateFolders();
            // TODO adjust project settings, linear, company name
            // TODO remove extra packages
            // TODO setup light settings
            // TODO adjust mainscene: camera pos, skybox off?
            // TODO save mainscene
            // TODO add mainscene to build scenes list
            // TODO adjust quality settings (but only in mobile?)

            // TODO self destruct this editor script file?

            // refresh folder
            AssetDatabase.Refresh();
        }

        static void CreateFolders()
        {
            // create each folder if it doesnt exists
            foreach (string folder in folders)
            {
                if (!Directory.Exists(assetsFolder + "/" + folder))
                {
                    Directory.CreateDirectory(assetsFolder + "/" + folder);
                }
            }
        }
    }
}