nhn / gpm.unity

A brand of NHN providing free services required for game development.

Home Page:https://gameplatform.nhncloud.com/en/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

불필요한 에셋 제거 기능에서 어드레서블도 예외 처리가 가능할까요?

paka9999 opened this issue · comments

Service

  • WebView
  • AssetManagement
  • Communicator
  • LogViewer
  • Manager
  • UI
  • Profiler
  • Adapter
  • DLST

Version

2020.3.33f1

Summary

에셋번들은 필터링 해주는 기능이 있는 것 같은데, Addressables 관련 오브젝트나 리소스들은 따로 필터링 되지 않는 것 같아서요.
혹시 방법이 있다면, 알려주시면 감사하겠습니다 👍

Screenshots

Additional context

@paka9999
안녕하세요.
현재 Addressable은 의존성 때문에 필터링이 추가되어있지는 않습니다.

때문에 의존성을 추가하고 코드를 추가해야합니다.
방법은 다음과 같습니다.

  1. gpm_assetManagement 파일에 Unity.Adressable.Editor 의존성을 추가합니다.

image

  1. UnusedAssetFilter.cs 함수에 Addressable 오브젝트를 찾는 함수를 추가합니다.
    아래 함수로 Addressable Path들을 받아올 수 있습니다.

namespace는 아래와 같습니다.
using UnityEditor.AddressableAssets;
using UnityEditor.AddressableAssets.Settings;

2-1. UnusedAssetFilter class 내부에 addressablePaths 리스트 변수를 추가합니다.

private List<string> addressablePaths = new List<string>();

2-2. UnusedAssetFilter class 내부에 addressablePaths 받아오는 함수를 추가합니다.

private void CheckAddressable()
{
    AddressableAssetSettings aaSettings = AddressableAssetSettingsDefaultObject.Settings;
    List<AddressableAssetEntry> addressableList = new List<AddressableAssetEntry>();

    aaSettings.GetAllAssets(addressableList, true);

    addressablePaths.Clear();
    foreach (AddressableAssetEntry entry in addressableList)
    {
        addressablePaths.Add(entry.AssetPath);
    }
}
  1. Init() 함수에 위에서 추가한 CheckAddressable(); 함수를 추가합니다.

  2. IsFilter 함수 내에 필터링 조건을 추가합니다.

for (int i = 0; i < filterList.Count; i++)
{
    if(string.IsNullOrEmpty(filterList[i].filterPath) == false)
    {
        if (path.Contains(filterList[i].filterPath) == true)
        {
            return false;
        }
    }
}

(Option) 다른 옵션과 같이 bool filterAddressable 플래그를 추가하실 수도 있습니다.
툴 UI는 UnusedAssetFilterGUI.cs 의 OnGUI()내에서 제어됩니다.

@smflt-nhn 답변 감사합니다. 항상 잘 사용하고 있습니다 👍
image