# Save as a course template About 15 minutes. Instructor page. ## Learning objectives - Clean the sample scene so a new project starts with Player + Plane + PlayerMover - Save a Unity Hub custom template with **Keep Project Settings** on - Fall back to a cleaned project-folder zip if Hub is older than 3.18 There is no `.unityproject` file extension in Unity. If you wanted a reusable ".unityproject", use a Hub **custom template**, or zip a clean project folder. A `.unitypackage` is different: it shares Assets (and optionally some settings you packed), not a full project, and it will miss **Active Input Handling** if you only export scripts and scenes. Official Hub steps: [Create a custom template | Unity Hub](https://docs.unity.com/en-us/hub/templates-create-custom) ## What must be in the starter Before you save anything, open the project you built in pages [02](02-create-the-project.md)–[05](05-move-a-player.md) and make it boring on purpose. 1. Open **SampleScene**. 2. Keep **Main Camera**, **Directional Light**, **Plane**, and **Player**. 3. Delete leftover cubes, test canvases, and extra cameras. 4. On **Player**, leave **Player Mover** enabled. Remove **Player Input** and **Player Mover Events** unless you want every student to start on the events workflow. 5. Select **Player**, press **F** in the Scene view, and confirm the Game view shows the cube on the plane. 6. Save the scene (**File > Save**). You should see: Hierarchy is Camera, Light, Plane, Player. Console is empty in Play mode. WASD still moves the cube. ### Optional student readme in the project 1. In `Assets`, create `README.txt`. 2. Put three lines in it, for example: ```text Course starter: Unity 6 + New Input System Active Input Handling is Input System Package (New). Move the Player cube with WASD or a gamepad left stick (Play mode). ``` ## Primary path: Hub custom template (Hub 3.18+) Custom templates package a project so **New project** in Hub can clone it. Suggested identity: - **Name:** `Course Starter — Input System` - **Version:** `1.0.0` - **Description:** `URP 3D starter with Input System Package (New), project-wide actions, and a WASD Player cube.` ### From the Projects list 1. Close the Unity Editor so Hub is not fighting an open project. 2. Open **Unity Hub**. 3. Select **Projects**. 4. Open the project menu for this project (the **…** menu on the project row). 5. Select **Save project as custom template**. ![Save project as custom template in Unity Hub](images/08-save-custom-template.png) 6. Enter the name, description, and version above. 7. Enable **Keep Project Settings**. 8. Skip source control unless you already use it for templates. 9. Select **Create**. ### From the Templates window 1. In Hub, open the **Templates** window. 2. Select **New template**. 3. Choose this project as the source. 4. Enter name, description, and version. 5. Enable **Keep Project Settings**. 6. Select **Create**. You should see: the template listed in the Templates window and as a choice when you create a new project. > **Why this matters:** **Keep Project Settings** must be on. If it is off, Hub copies `Assets` and `Packages` but not Player settings. Students get the Input System package and then a warning that the project is using the wrong input backends. They will have to redo [Enable the Input System](03-enable-the-input-system.md). For URP + Input System starters, always keep project settings. ### Confirm the template 1. In Hub, select **Projects > New project**. 2. Select **Course Starter — Input System**. 3. Create a throwaway project on a local disk. 4. When the Editor opens, check all four: - **Edit > Project Settings > Player > Other Settings > Configuration > Active Input Handling** is **Input System Package (New)** - **Edit > Project Settings > Input System Package** has the Action Asset assigned - SampleScene contains Plane + Player - Play mode: WASD moves the cube Delete the throwaway project after it passes. To ship an update later, change the source project, then save it as a **new** template (new version or new name). Hub does not overwrite an existing custom template in place. ## Fallback: clean project folder (older Hub) If Hub has no **Save project as custom template** and no **Templates > New template**, share the project folder instead. 1. Close the Editor. 2. Duplicate the project folder (Finder, Explorer, or `cp -R`). 3. In the **copy**, delete these directories if they exist. They regenerate and they make huge archives: - `Library` - `Logs` - `Temp` - `obj` 4. Keep these: - `Assets` - `Packages` - `ProjectSettings` - `Assets/README.txt` if you added it 5. Zip the cleaned folder. 6. Students: download, unzip to a **local** disk, then in Hub use **Open** / **Add project from disk**. You should see: the zip is small compared with a zip that still contains `Library`. Students open it as a normal project, not as a Hub template. > **Warning:** Still do not zip from a OneDrive/Dropbox copy. Duplicate onto a local path first. ## `.unitypackage` is not a full starter **Assets > Export Package…** creates a `.unitypackage`. That is useful for sharing extra scripts or a prefab. It is not a replacement for this template: - It does not create a Unity project - It does not reliably carry **Active Input Handling** - Students who import it into a Built-in 3D template still have to do page 03 by hand Use Hub custom templates (or the folder zip) for the course starter. Use `.unitypackage` only for add-on assets. ## Checkpoint The starter is ready when: - A new Hub project from the template (or an unzipped folder) opens in Unity 6 - **Active Input Handling** is **Input System Package (New)** without extra clicks - Play mode moves the Player cube with WASD