夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

UnityEditor拡張で現在インポートされているパッケージを取得する

本日はUnity枠です。

UnityEditor拡張を使用して現在のUnityプロジェクトにインポートされているパッケージを取得していきます。

〇インポートされているパッケージを取得する

インポートされているパッケージを取得するためには次のようなコードを使用します。

    static void getImportedPackages()
    {
        packages = new List<string>();
        ListRequest request = Client.List();  
        EditorApplication.update += OnUpdate;

        void OnUpdate()
        {
            if (request.IsCompleted)
            {
                if (request.Status == StatusCode.Success)
                {
                    foreach (var package in request.Result)
                    {
                        Debug.Log(package.name);
                        packages.Add(package.name);
                    }
                }
                else if (request.Status >= StatusCode.Failure)
                {
                    Debug.LogError(request.Error.message);
                }

                EditorApplication.update -= OnUpdate;
            }
        }
    }

実行するとコンソールにプロジェクトにインポートされているパッケージが表示されます。

ListRequest request = Client.List();でUnityのパッケージマネージャーに対してのリクエストを行っています。

if (request.IsCompleted)でrequestの取得が完了したかを検知しています。

もしうまく成功していない場合はDebug.LogError(request.Error.message);でエラーが出るようになっています。

 成功した場合はforeach文で取得したパッケージ名をログとして出力、またString型のリストに格納しています。

 これによって現在インポートされているパッケージを取得することができました。