패키지 관리자에서 필요한 패키지 가져오기

입문


빨리 민주화
안녕하십니까? 광고 달력 19일째에 맡은 피뢰입니다.유니티 패키지를 나눠준 사람들 중 일부는 상대방과 자신의 프로젝트에 들어간 자원의 괴리로 고통스러웠다고 생각한다.
예를 들어 우리가 PPSv2에 좋은 그림을 제공했더라도 목적지를 가져온 프로젝트에 PackageManager의 PostProcessing이 없으면 그 매력을 전달할 수 없다.
이번에는 편집기를 사용하여 PackageManager를 확장하는 방법을 알아보겠습니다.

PackageManager 사용


PackageManager에 대한 기본 작업은 UnityEditor.PackageManager 에서 수행됩니다.
https://docs.unity3d.com/ja/2017.4/ScriptReference/PackageManager.Client.html

가져오기 패키지 목록 가져오기

Client.List를 사용하여 가져오기 패키지 목록을 가져옵니다.목록의 반환 값은 목록 요청입니다.
https://docs.unity3d.com/ja/2017.4/ScriptReference/PackageManager.Client.List.html
반환값의 이름에서도 알 수 있듯이 이 함수는 비동기적으로 실행된다.ListRequest에는 Status, Result 등의 변수가 있으므로 비동기적으로 쓰기를 참조하십시오.
↓ 예시 코드 (가져온 모든 패키지 출력)
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEditor;
using UnityEditor.PackageManager;
using UnityEngine;

public class ListPackage
{
    [MenuItem("PackageManager/List")]
    static async void List()
    {
        var listRequest = Client.List();
        while (listRequest.Status == StatusCode.InProgress)
        {
            await Task.Delay(100);
        }

        if (listRequest.Status == StatusCode.Success)
        {
            var result = "";
            foreach (var package in listRequest.Result)
            {
                result += package.packageId + "\n";
            }
            Debug.Log(result);
        }

        if (listRequest.Status == StatusCode.Failure)
        {
            Debug.Log("Error!");
        }

    }

}
MenuItem 속성이 UnityEditor의 메뉴 모음에 PackageManager 모음을 추가했다고 생각하기 때문에 List를 누르십시오.한 순간의 지연 후에 다음 로그가 출력됩니다.

Hoge@huga는 각 패키지의 packageID입니다.
@ 이전에는 패키지의 이름이었고, @ 이후에는 패키지의 버전이었다.
현재는 com.unity.hoge (즉 유니티 공식) 패키지만 있지만, 앞으로 PackageManager를 사용할 수 있다면 다른 사람들은 패키지를 가져올 수 있을 것이다.

패키지 지정 및 가져오기


새 패키지를 가져올 때 사용합니다Client.Add.추가된 반환 값은 AddRequest입니다.
이 동작을 실행하면 진도표를 표시하고 일반적인 방법의 패키지 install과 같은 방식으로 가져옵니다.
https://docs.unity3d.com/ja/2017.4/ScriptReference/PackageManager.Client.Add.html
목록과 같이 비동기적으로 처리됩니다.매개 변수의 packageIdOrName은 nam (@ 이전) 만 지정하면 최신 버전을 가져올 수 있습니다.packageID를 통해 버전 (@ 후면) 에 지정하면 이전 버전의 패키지가 가져옵니다.
↓ 예시 코드 (적절한 패키지 가져오기)

마찬가지로 메뉴 표시줄에 Add가 있어야 하니 눌러 보세요.이번에는 직접 PostProcessing으로 최신 버전을 설치합니다.시간이 지나면 아래의 진도표가 나와 도입의 진전을 전달할 것이다.

시간이 좀 더 지나면, AddRequest.상태는 Success이며 다음 로그를 출력합니다.

패키지를 보면 PostProcessing이 설치되어 있음을 알 수 있습니다.

설치된 패키지는 아무 일도 일어나지 않습니다.(특별히 처리하지 않고 Succeeded가 됨)

유니티 패키지 가져오기 후 PackageManager 호출

[InitializeOnLoad] 속성은 UnityEditor가 시작되고 그 자체가 컴파일될 때 클래스 구조 함수를 실행할 수 있도록 합니다.
여기에 방금 처리한 것을 적으면 유니티 패키지를 가져온 후 바로 패키지를 설치할 수 있습니다 (Unity Package와 Package Manager의 패키지는 헷갈리기 쉽습니다...)
그러나 구조 함수 자체에 async를 추가할 수 없기 때문에 구조 함수에서 다른 비동기적인 방법을 실행합시다.

끝내다


다른 IDE에서 Nuget 역할을 하는 Package Manager는 현재 json으로 퍼블릭 리포지토리를 직접 등록할 수 있을 것 같지만 민주화로 쉽게 패키지를 공개할 수 있었으면 좋겠다.
저는 개인적으로 가방에 추가된 자산류를git로 공유하지 않는 것을 좋아합니다.

좋은 웹페이지 즐겨찾기