-
Notifications
You must be signed in to change notification settings - Fork 58
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).
- 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
- 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
- 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
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);
}
}
}
}
}