개발관련(Development)/유니티3D(Unity3D)
Unity3D 로드된 AssetBundle 특정 위치에 다시 저장하기 ( FileStream )
Clack
2011. 11. 16. 11:40
참조 : http://www.devkorea.co.kr/bbs/board.php?bo_table=m04_3&wr_id=9442#c_9459
WWW www = WWW.LoadFromCacheOrDownload( url, 1);
위 문장처럼 LoadFromCacheOrDownload를 사용하면 www의 bytes는 에셋번들 전용이라는 오류문구가 뜨는데
WWW www = new WWW(url);
위 문장처럼 WWW의 생성자의 매개변수로 url을 넣어 www를 생성하면 www의 bytes에 접근을 해도 오류문구가 뜨지 않는다.
LoadAssetBundle.cs
private string url = "Lerpz_Prefab.unity3d";
public IEnumerator LoadAsset()
{
WWW www = new WWW(url);
yield return www;
SaveAssetBundle( www.bytes, "Lerpz_Prefab.unidy3d" );
AssetBundle bundle = www.assetBundle;
GameObject go = bundle.Load("Lerpz", typeof(GameObject)) as GameObject;
Instantiate( go );
}
private void SaveAssetBundle( byte[] byteData, string fileName )
{
string savePath = Application.persistentDataPath;
FileStream fs = new FileStream( savePath + "/"+fileName , FileMode.Create);
fs.Seek(0, SeekOrigin.Begin);
fs.Write(byteData, 0, byteData.Length);
fs.Close();
}