AssetBundle 탐구생활 |
참조
참조 프로젝트 : 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();