Initialize Project Script - unitycoder/UnityLauncherPro GitHub Wiki

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

Quick Start

  • Press FETCH button to download my ready to use sample init script from https://github.com/unitycoder/UnityInitializeProject/tree/main/Assets/Editor
  • Confirm that it was downloaded by pressing [...] button (it should open Scripts/ folder next to unitylauncherpro.exe) and that folder should contain "InitializeProject.cs" file
  • Enable [x] Use Init script, by checking that box
  • Now create new test project from Projects or Editors tab
  • Once Unity editor launches, it should display this init script window: *I have added Hot Reload here manually as commonly used package image
  • Press Setup Project and the initialize script will do your setup automatically (based on my sample script, which currently does these things, listed here: https://github.com/unitycoder/UnityInitializeProject?tab=readme-ov-file#current-features
  • After init script has completed, it will delete itself

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);
                }
            }
        }
    }
}