Skip to content

Template Unity Package for OpenUPM and NPMJS. Supports UPM (Unity Package Manager) with versioning.

License

Notifications You must be signed in to change notification settings

IvanMurzak/Unity-Package-Template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stats

Unity Editor supports NPM packages. It is way more flexible solution in comparison with classic Plugin that Unity is using for years. NPM package supports versioning and dependencies. You may update / downgrade any package very easily. Also, Unity Editor has UPM (Unity Package Manager) that makes the process even simpler.

This template repository is designed to be easily updated into a real Unity package. Please follow the instruction bellow, it will help you to go through the entire process of package creation, distribution and installing.

Steps to make your package

1️⃣ Click the button to create new repository on GitHub using this template.

create new repository

2️⃣ Clone your new repository and open it in Unity Editor

3️⃣ Initialize Project

Use the initialization script to rename the package and replace all placeholders.

.\commands\init.ps1 -PackageId "com.company.package" -PackageName "My Package"

This script will:

  • Rename directories and files.
  • Replace YOUR_PACKAGE_ID, YOUR_PACKAGE_NAME, etc. in all files.

4️⃣ Manual Configuration

  1. Update package.json Open Unity-Package/Assets/root/package.json and update:

    • description
    • author
    • keywords
    • unity (minimum supported Unity version)
  2. Generate Meta Files To ensure all Unity meta files are correctly generated:

    • Open Unity Hub.
    • Add the Installer folder as a project.
    • Add the Unity-Package folder as a project.
    • Open both projects in Unity Editor. This will generate the necessary .meta files.

5️⃣ Version Management

To update the package version across all files (package.json, Installer.cs, etc.), use the bump version script:

.\commands\bump-version.ps1 -NewVersion "1.0.1"

6️⃣ Setup CI/CD

To enable automatic testing and deployment:

  1. Configure GitHub Secrets Go to Settings > Secrets and variables > Actions > New repository secret and add:

    • UNITY_EMAIL: Your Unity account email.
    • UNITY_PASSWORD: Your Unity account password.
    • UNITY_LICENSE: Content of your Unity_lic.ulf file.
      • Windows: C:/ProgramData/Unity/Unity_lic.ulf
      • Mac: /Library/Application Support/Unity/Unity_lic.ulf
      • Linux: ~/.local/share/unity3d/Unity/Unity_lic.ulf
  2. Enable Workflows Rename the sample workflow files to enable them:

    • .github/workflows/release.yml-sample ➡️ .github/workflows/release.yml
    • .github/workflows/test_pull_request.yml-sample ➡️ .github/workflows/test_pull_request.yml
  3. Update Unity Version Open both .yml files and update the UNITY_VERSION (or similar variable) to match your project's Unity Editor version.

  4. Automatic Deployment The release workflow triggers automatically when you push to the main branch with an incremented version in package.json.

7️⃣ Add files into Assets/root folder

Unity guidelines about organizing files into the package root directory

  <root>
  ├── package.json
  ├── README.md
  ├── CHANGELOG.md
  ├── LICENSE.md
  ├── Third Party Notices.md
  ├── Editor
  │   ├── [company-name].[package-name].Editor.asmdef
  │   └── EditorExample.cs
  ├── Runtime
  │   ├── [company-name].[package-name].asmdef
  │   └── RuntimeExample.cs
  ├── Tests
  │   ├── Editor
  │   │   ├── [company-name].[package-name].Editor.Tests.asmdef
  │   │   └── EditorExampleTest.cs
  │   └── Runtime
  │        ├── [company-name].[package-name].Tests.asmdef
  │        └── RuntimeExampleTest.cs
  ├── Samples~
  │        ├── SampleFolder1
  │        ├── SampleFolder2
  │        └── ...
  └── Documentation~
       └── [package-name].md
Final polishing
  • Update the README.md file (this file) with information about your package.
  • Copy the updated README.md to Assets/root as well.

⚠️ Everything outside of the root folder won't be added to your package. But still could be used for testing or showcasing your package at your repository.

8️⃣ Deploy to any registry you like

9️⃣ Install your package into Unity Project

When your package is distributed, you can install it into any Unity project.

Don't install into the same Unity project, please use another one.

  • Install OpenUPM-CLI

  • Open a command line at the root of Unity project (the folder which contains Assets)

  • Execute the command (for OpenUPM hosted package)

    openupm add YOUR_PACKAGE_NAME

Final view in Unity Package Manager

image

About

Template Unity Package for OpenUPM and NPMJS. Supports UPM (Unity Package Manager) with versioning.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project