포스트
유니티 패키지 일괄 업데이트 스크립트.
현재 유니티 프로젝트에 설치된 패키지들을 모두 최신 버전으로 일괄 업데이트하는 스크립트.
이 스크립트를 프로젝트에 추가하면 유니티 상단 메뉴에서 Utils/Update All Packages 버튼이 생긴다.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.PackageManager.Requests;
using UnityEditor.PackageManager;
using UnityEngine;
using Unity.EditorCoroutines.Editor;
namespace Unity.Editor.Example
{
static class UnityPackageBatchUpdate
{
[MenuItem("Utils/Update All Packages")]
static void UpdateAllPackages()
{
EditorCoroutineUtility.StartCoroutineOwnerless(UpdateRoutine());
}
private static IEnumerator UpdateRoutine()
{
var listToUpdate = new List<string>();
var listRequest = Client.List();
while(!listRequest.IsCompleted)
{
yield return new WaitForSeconds(0.1f);
}
var packageCollection = listRequest.Result;
foreach(var package in packageCollection)
{
if(!package.isDirectDependency)
{
continue;
}
var targetVersion = string.Empty;
for(var i = package.versions.compatible.Length - 1; i >= 0; i--)
{
var version = package.versions.compatible[i];
if(version.Contains("pre") || version.Contains("exp"))
{
continue;
}
targetVersion = version;
break;
}
listToUpdate.Add($"{package.name}@{targetVersion}");
}
Client.AddAndRemove(listToUpdate.ToArray(), Array.Empty<string>());
}
}
}https://gist.github.com/IJEMIN/21cbd8f9e1086727df08e53562d16484