하나. 유니티 프로젝트 폴더의 'StreamingAssets' 폴더에 assetBundle 을 둔다.
유니티에서 안드로이드로 빌드하면 apk 파일이 생성됩니다. 이 파일은 프로젝트 폴더가 압축된 거라고 보면 됩니다.
AssetBundle은 프로젝트 폴더에서 'StreamingAssets'라는 이름의 폴더에 넣어야 apk 파일의 'Assets'이라는 이름의 폴더에 위치하게 됩니다.
이 'Assets' 폴더는 이클립스로 android project를 개발할 때의 'Assets' 폴더입니다.
유니티 프로젝트 폴더에서 'Resources' 폴더의 내용은 apk 파일의 'bin' 폴더 아래에 위치하게 됩니다.
둘. AssetBundle 을 로드한다.
플랫폼에 따라서 다른 경로로 접근한다.
MAC OS or Windows 에서는
path = Application.dataPath + "/StreamingAssets";
iOS 에서는
path = Application.dataPath + "/Raw";
Android 에서는
path = "jar:file://" + Application.dataPath + "!/assets/";
이렇게 로드한다.
예를 들어서 android 에서 'A.unity3d' 라는 assetBundle 을 로드하고 싶다면,
path = "jar:file://" + Application.dataPath + "!/assets/A.unity3d";
이렇게 로드한다.
using UnityEngine;
using System.Collections;
public class LoadFromAndroidLocal1 : MonoBehaviour
{
private string path = "jar:file://" + Application.dataPath + "!/assets/A.unity3d";
void OnGUI ()
{
if ( GUILayout.Button ( "Load Asset" ) )
{
StartCoroutine ( LoadAsset ( path, 1 ) );
}
}
IEnumerator LoadAsset ( string path, version ) )
{
while ( !Caching.ready )
{
yield return null;
}
using ( WWW asset = WWW.LoadFromCacheOrDownload ( path, version ) )
{
yield return asset;
if ( asset.error != null )
{
Debug.Log ( "error : " + asset.error.ToString () );
}
else
{
GameObject go = GameObject.CreatePrimitive ( PrimitiveType.Plane );
go.transform.rotation = Quaternion.Euler ( new Vector3 ( 0f, 180f, 0f ) );
go.renderer.material.mainTexture = asset.assetBundle.mainAsset as Texture2D;
}
asset.assetBundle.Unload ( false );
}
}
}
- 위의 코드를 보면 이제까지와 크게 다른 부분은 없지만, path를 초기화하는 부분이 바뀌었습니다.
'develop' 카테고리의 다른 글
[Unity] Error building Player: Win32Exception: zipalign.exe (0) | 2014.08.14 |
---|---|
Asset server 대신에 외부 SVN 사용하기 (0) | 2014.03.06 |
[Unity] AssetBundle 사용하기 - 웹에서 모바일( 안드로이드 )로 로드하기 (0) | 2014.02.14 |
[Unity] AssetBundle 사용하기 - Web, Server (0) | 2014.02.14 |
[Unity] AssetBundle 사용하기 - Local (0) | 2014.02.13 |