[Unity] Addressoble Asseets System 개인 수첩

개인 Addressable AssetsSystem의 노트입니다.
어디서 누구를 도울 수 있었으면 좋겠어요.
가져오기 방법에 대한 자세한 내용은 를 참조하십시오.
변수명과 방법명은 모두 적당하기 때문에 들고 있을 때 다시 명명해야 한다.
개체 버전 마감 2018/09/13
Unity 2018.3.0b1
AddressableAssetsSystem 0.3.5-Preview
예, 그렇습니다.

코드에서 그룹에 자산 추가


역시 수동으로 넣는 게 귀찮아요.
... 때문에
메뉴를 적당히 누르면 자동으로 등록됩니다.

static string _addressableAssetsPath = "Assets/AddressableAssets/";

    [MenuItem("AddressableAssets/ConvertAddressableAssetsData")]
    public static void ConvertAddressableAssetsData()
    {
        var aaSettings = AddressableAssetSettings.GetDefault(false, false);

        var files = System.IO.Directory.EnumerateFiles(_addressableAssetsPath, "*", System.IO.SearchOption.AllDirectories);
        foreach(var file in files)
        {
            var ex = Path.GetExtension(file);
            var path = file.Replace('\\','/');
            if (ex == ".meta") continue;
            var basePath = path.Replace(_addressableAssetsPath, "");
            var baseDirectory = basePath.Split('/')[0];
            var group = aaSettings.groups.Find(g => g.Name == baseDirectory);
            if (group == null)
            {
                group = aaSettings.CreateGroup(baseDirectory, typeof(BundledAssetGroupProcessor), false, false);
                // 追加した場合は取り直しておく
                aaSettings = AddressableAssetSettings.GetDefault(false, false);
            }

            // グループに対してAssetを登録
            var en = aaSettings.CreateOrMoveEntry(AssetDatabase.AssetPathToGUID(file), group);

            // Addressを登録
            en.address = basePath.Replace(ex, "");
        }
    }
천천히 설명해 주세요.
지정한 폴더 아래에 있는 파일 캡처
_경로 바로 아래의 디렉토리를 그룹 이름으로 읽어들이기
그렇지 않으면 조합 생성
그룹에 자산 등록
주소 열기다음 경로에서 파일로 먼저 업데이트
일단 이렇게 하다

단번에 등록했다
조금 가볍게.

0.3.5 나중에는...


0.3.5 때 B undled Asset Group Processor가 인터넷으로 바뀌었어요.
CreateGroup에 가입할 때 다음과 같이 할 수 있습니다

        var asm = Assembly.Load("Unity.Addressables.Editor");
        var type = asm.GetType("UnityEditor.AddressableAssets.BundledAssetGroupProcessor");

foreach(var file in files)
        {
            var ex = Path.GetExtension(file);
            var path = file.Replace('\\','/');
            if (ex == ".meta") continue;
            var basePath = path.Replace(_addressableAssetsPath, "");
            var baseDirectory = basePath.Split('/')[0];
            var group = aaSettings.groups.Find(g => g.Name == baseDirectory);
            if (group == null)
            {
                group = aaSettings.CreateGroup(baseDirectory, type, false, false);
                // 追加した場合は取り直しておく
                aaSettings = AddressableAssetSettings.GetDefault(false, false);
            }

대량 제작 시 BundleMode 지정


왜 현재 구축 후 또는 추가 자산 후 도입이 끝나면 BundleMode가 PackTogether가 되는지 모르겠다.
... 때문에
작성 시 지정
다른 좋은 방법이 있을지도 몰라요.

//デフォ設定持ってくる
var aaSettings = AddressableAssetSettings.GetDefault(false, false);
        aaSettings.groups.ForEach(g =>
        {
            //SetDataで書き込む
            g.Data.SetData("BundleMode", BundledAssetGroupProcessor.BundleMode.PackSeparately);
        });

        // とりあえずビルドするだけ
        var bs = BuildScript.PrepareRuntimeData(
            true,
            arg.isDevelopmentBuild,
            false,
            true,
            false,
            setting.BuildTargetGroup,
            setting.BuildTarget
            );
설마 설정 방법이 Data인가?SetData는
아마 이걸 바꾼 마지막 그룹의 온셋데이터?이후 생성 안 함
가끔 제대로 업데이트되지 않은 경우도 있다.

0.3.5 나중에는...


0.3.5부터 그룹 설정을 ScriptalbleObject에 저장하기 때문에
구축할 때의 데이터입니다.SetData 필요 없음
B undled Asset GroupProcessor가 인터넷으로 바뀌었기 때문에 이 방법은 본래 잘못된 것이므로 주의해야 한다
전용 관리창만 만들 때 주의해야 하나요?

좋은 웹페이지 즐겨찾기