카테고리 없음

Unity잡설_AssetBundleWorkFlow

zelkova 2020. 9. 10. 14:38

<목차로 돌아가기>

 

 

 

 

AssetBundle 탐구생활

참조

유니티 메뉴얼_AssetBundleWorkFlow

유니티 메뉴얼 에셋번들 상세 

참조 프로젝트 : lib_20200910_AssetBundle

 

이미지를 프로젝트에 넣지 않았을때

-> 26,968,882 바이트

 

 프로젝트에 이미지 넣은뒤 폴더정리하고 이미지 사용안하고 빌드 

-> 26,968,886 바이트

 

 프로젝트에 이미지 넣은뒤 폴더정리하고 Material에 넣고 빌드.

-> 26,968,880 바이트

-ㅁ-?? 왜줄어들지 어쨋든 사용하지 않는건 역시 빌드하지 않는다는것을 확인.

 

프로젝트에 이미지 넣은뒤 폴더정리하고 Material 사용하고 빌드

-> 37,570,896

확실히 늘어났다.

 

에셋 번들을 사용하여 번들을 추가하고 빌드.

-> 26,934,985
파일 몇개 지웠더니 줄어들어버렸다.

실험 결론은 유니티에서 참조하지 앟는 에셋은 빌드할때 완전히 배제됨.

 

PS. Material 적용시켰는데 핑크핑크하면. BuildTarget 체크하고 잘못된것 없는지 확인.

BuildPipeline.BuildAssetBundles(
        assetBundleDirectory_Android, 
        BuildAssetBundleOptions.UncompressedAssetBundle, 
        BuildTarget.Android);

 

유니티 Resources.Load관리.

GameObject obj = Instateate(Resouces.Load<GameObject>("파일이름"));

 

 

유니티 AssetDatabase관리.

출처: https://hochiminh.tistory.com/597 [호치민의 한국넘]

 

// 폴더가 존재하는지 bool값을 반환한다..

bool existFolder = AssetDatabase.IsValidFolder("Assets/material");

 

// 어셋을 폴더 구조로 정리를  경우에 사용할  있다.

string guid = AssetDatabase.CreateFolder("Assets", "material"); // guid 반환한다.

string newFolderPath = AssetDatabase.GUIDToAssetPath(guid); // guid에서 경로를 반환한다.

 

// material 생성할 때나 애니메이션, 스크립트오브젝트를 생성할  사용할 수가 있다.

Material material = new Material(Shader.Find("Specular"));

AssetDatabase.CreateAsset(material, "Assets/MyMaterial.mat");

 

// 이미 존재하는 어셋의 경우 외부에서 복사를 하는 것보다는 AssetDatabase CopyAsset 쓰는 것이 처리속도가 빠르다.

AssetDatabase.CopyAsset("Assets/MyMaterial.mat", "Assets/MyMaterial_2.mat");

 

// 애니메이션 클립을 생성하고,  애니메이션에 머티리얼을 추가할 경우 AddObjectToAsset 사용하여 추가한다. 추가한 후에는 ImportAsset 호출하여 변경된 것을 적용해준다.

AnimationClip animationClip = new AnimationClip();

animationClip.name = "My Clip";

AssetDatabase.AddObjectToAsset(animationClip, material);

 

// 추가로 ImportAsset 호출하여 변경된 것을 적용해준다.

AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(animationClip));

 

// 다른 방법으로는 dll에서 모든 파일을 복사한 후에 refresh 해주게 되면 전체 파일의 메타파일이 생성이 되고 AssetDatabase 갱신하게 된다.

AssetDatabase.Refresh();




 

 

 

 

 

반응형