コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Package Manager に登録されているパッケージの一覧をエディタ拡張で取得する例

ソースコード

using System.Linq;
using UnityEditor;
using UnityEditor.PackageManager;
using UnityEditor.PackageManager.Requests;
using UnityEngine;

internal static class Example
{
    private static ListRequest m_request;

    [MenuItem( "Tools/Hoge" )]
    private static void Hoge()
    {
        m_request = Client.List( true );

        EditorApplication.update += OnUpdate;
    }

    private static void OnUpdate()
    {
        if ( !m_request.IsCompleted ) return;

        EditorApplication.update -= OnUpdate;

        if ( m_request.Status != StatusCode.Success ) return;

        var packageCollection = m_request.Result
                .Where( x => x.isDirectDependency )
                .Where( x => !x.name.StartsWith( "com.unity." ) )
            ;

        foreach ( var packageInfo in packageCollection )
        {
            Debug.Log( packageInfo.name );
        }
    }
}