0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UPM パッケージのテストツール

Last updated at Posted at 2025-05-31

諸事情あり、本年度から Zenn に移行することとなりました。暫くはマルチポストご容赦ください。
 

UpmPackageTestKit は、クリーンなテスト環境を複数の Unity バージョン向けに自動生成し Unity Package Manager(UPM)パッケージのビルドテストを行うツールです。

パッケージ全体ではなく一部分だけを共有する、というような運用を行っている場合に特に有用です。

使用方法

UnityFundamentals > UPM Package Test Kit > ... から各種コマンドを実行します。

対象の package.json を選択した状態で Generate... を実行すると、設定した「最小サポートバージョン」とそれ以上のバージョン向けに最小構成の Unity プロジェクトを一括生成します。

  • Unity エディターの自動インストールは行わないので事前に必要なバージョンをインストールしておく必要があります。
  • パッチバージョンは「インストールされている最小のバージョン」が選ばれます。
    • サポート対象未満のパッチバージョンは事前にアンインストールする必要があります。

プロジェクト構成

Unity がデフォルトで読み込む Built-in カテゴリーのパッケージ(Animation UI IMGUI 等)すら読み込まない最小構成のプロジェクトになっています。

その為、ビルドを通すには Built-in パッケージを含めた完全な依存関係を package.json で定義する必要があります。

ツールによって生成される環境は、全4つのファイルとビルドスクリプトのみで構成されたプロジェクトになっています。

  • Unity バージョン X
    • Assets/
      • Main.unity
      • Editor/
        • BuildScript.cs
    • Packages/
      • mainfest.json
    • ProjectSettings/
      • ProjectVersion.txt
    • ビルドスクリプト.bat
  • Unity バージョン Y
  • Unity...
  • 一括ビルド.bat

生成されるファイルの内容

バージョンや URL は適宜変更されます。

ProjectVersion.txt
m_EditorVersion: 2021.3.0f1
manifest.json
{
  "dependencies": {
    "com.sator-imaging.unity-scripting-fundamentals": "https://github.com/sator-imaging/Unity-Fundamentals.git"
  }
}
Main.unity
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1286492270
GameObject:
  serializedVersion: 6
  m_Component:
  - component: {fileID: 1286492273}
  - component: {fileID: 1286492272}
  m_Name: Main Camera
  m_TagString: MainCamera
  m_IsActive: 1
--- !u!4 &1286492273
Transform:
  m_GameObject: {fileID: 1286492270}
--- !u!20 &1286492272
Camera:
  m_GameObject: {fileID: 1286492270}
  m_Enabled: 1
  serializedVersion: 2
BuildScript.cs
using UnityEngine;
using UnityEditor;
using UnityEditor.Build;

public class BuildScript
{
    public static void Build()
    {
        var group = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
        var named = NamedBuildTarget.FromBuildTargetGroup(group);

        PlayerSettings.fullScreenMode = FullScreenMode.Windowed;
        PlayerSettings.resizableWindow = true;
        PlayerSettings.SetScriptingBackend(group, ScriptingImplementation.IL2CPP);
        PlayerSettings.SetIl2CppCompilerConfiguration(group, Il2CppCompilerConfiguration.Debug);
#if UNITY_2022_3_OR_NEWER == false
        EditorUserBuildSettings.il2CppCodeGeneration = Il2CppCodeGeneration.OptimizeSize;
#else
        PlayerSettings.SetIl2CppCodeGeneration(named, Il2CppCodeGeneration.OptimizeSize);
#endif

        BuildPipeline.BuildPlayer(
            new[] { new EditorBuildSettingsScene("Assets/Main.unity", true) },
            "__BUILD/SatorImaging.UpmPackageTestKit.exe",
            BuildTarget.StandaloneWindows64,
            BuildOptions.None
            );
    }
}

自動生成されるビルドスクリプト

Unity の CLI ビルドでは ERRORLEVEL が適切に設定されないケースがあります。

代わりにアプリ(.exe)が実際にビルドされたかどうかで判定していますが、判定方法として完全かどうかは分かりません。必要に応じてビルドログを参照してください。

おわりに

自動生成されるビルドスクリプトは Windows 専用です。

以上です。お疲れ様でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?