#!/usr/bin/env bash set -euo pipefail ############################################## # make-template.sh # # This script packages a Unity template for local use # in Unity Hub's ProjectTemplates folder. # # How it works: # 1. Prompts for the full Unity version (e.g., 6000.1.15f1 or 6000.1.0b12). # 2. Deletes ProjectVersion.txt from the package folder if it exists. # 3. Creates a .tgz archive from the 'package' folder. # 4. Moves the archive into the correct Unity ProjectTemplates folder # under C:\Program Files\Unity\Hub\Editor\\Editor\Data\Resources\PackageManager\ProjectTemplates # # Requirements: # - Run this script in Git Bash with Administrator privileges. # - 'tar' command must be available (included with Git Bash). ############################################## TEMPLATE_NAME="com.unity.template.malevolent.tgz" SRC_DIR="package" require() { command -v "$1" >/dev/null 2>&1 || { echo "Error: $1 not found in PATH"; exit 1; }; } require tar if [[ ! -d "$SRC_DIR" ]]; then echo "Error: '$SRC_DIR' directory not found in $(pwd)" exit 1 fi read -rp "Enter full Unity version (e.g., 6000.1.15f1): " UNITY_VERSION if [[ ! "$UNITY_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+[a-z][0-9]+$ ]]; then echo "Error: version must look like '6000.1.15f1' or '6000.1.0b12'" exit 1 fi # Path to Unity's ProjectTemplates folder (Git Bash/MSYS format) TARGET_DIR="/c/Program Files/Unity/Hub/Editor/${UNITY_VERSION}/Editor/Data/Resources/PackageManager/ProjectTemplates" if [[ ! -d "$TARGET_DIR" ]]; then echo "Could not find: $TARGET_DIR" echo "Available Editors under /c/Program Files/Unity/Hub/Editor:" ls -1d "/c/Program Files/Unity/Hub/Editor"/* 2>/dev/null || true exit 1 fi # Remove ProjectVersion.txt if present PROJECT_VERSION_FILE="${SRC_DIR}/ProjectData~/ProjectSettings/ProjectVersion.txt" if [[ -f "$PROJECT_VERSION_FILE" ]]; then echo "Removing $PROJECT_VERSION_FILE..." rm -f "$PROJECT_VERSION_FILE" else echo "No ProjectVersion.txt found, skipping removal." fi # Create the .tgz echo "Creating archive: $TEMPLATE_NAME from '$SRC_DIR'..." tar -czf "$TEMPLATE_NAME" "$SRC_DIR" # Move to Unity's ProjectTemplates folder echo "Moving $TEMPLATE_NAME to:" echo " $TARGET_DIR" mv -f "$TEMPLATE_NAME" "$TARGET_DIR/" echo "Done." echo "Template installed to: $TARGET_DIR/$TEMPLATE_NAME"