회원 로그인
|
Asset Bundle (애셋 번들)
Asset Bundle
2.메뉴 만들기
:구글플레이, iTunes에서 앱 등록의 용량 제한(50MB)으로 추가 데이터를 서버로부터 다운로드 받을 수 있도록 하는 기능
-웹(www)에서도 다운이 가능한지 확인
- 서버(아파치)에 다운로드 가능하게 설정 해야 함
-프리팹 > 서버 > 다운로드 > 사용
-꼭 .unity3d 확장자 사용
-한번만 다운로드 하며 다음 실행 시 다운로드 하지 않음
1.프리팹으로 만들고 미리보기 밑에 AssetBundle > New
2.메뉴 만들기
-게임오브젝트에 안붙인다. 그리므로 MonoBehaviour 상속 안받아도 된다.(Start(), Update() 삭제)
-export 스크립트
using UnityEngine; using UnityEditor; // 네임스페이스 추가 using System.Collections; public class CreateAssetBundle { // 메뉴 생성 // 메뉴 클릭시 바로 밑 함수 호출 [MenuItem("Raon3D/Build AssetBundle")] static void BuildAllAssetBundle() { // .BuildAssetBundles("프로젝트명 바로 하위 폴더명") : BuildPipeline.BuildAssetBundles("AssetExport"); // Debug.Log("Call!"); } }
3.저장할 폴더 생성 (/프로젝트명/AssetBundle폴더명)
-저장될 폴더를 탐색기에서 생성
*폴더가 생성 안되어 있을 시 오류
4.게임오브젝트 선택 또는 폴더(묶음) 선택 후 AssetBundle 파일명.unity3 생성
-메뉴 실행하면 .unity3d Asset생성
5.서버에 올리기
-ftp를 통해 서버에 업로드
6.load 스크립트
using UnityEngine; using System.Collections; public class AssetBundleTest : MonoBehaviour { // 코루틴 스타트 호출 // 코루틴이 있을 때 호출 IEnumerator Start() { StartCoroutine(LoadCubeCoroutine()); // yield 바로 사용 가능 yield return new WaitForSeconds(1); StartCoroutine(SFXLoad()); } // 웹주소 변수(상수) const string curl = "http://180.70.94.180/guest_0001/raon3d/"; // cube 가져오기 IEnumerator LoadCubeCoroutine() { // url 지정 string url = curl + "cube.unity3d"; // .LoadFromCacheOrDownload(url, 버전 관리 번호) WWW www = WWW.LoadFromCacheOrDownload(url, 1); // 캐쉬 저장소에 다운로드 yield return www; // 다운로드하는데 에러가 없다면 if(www.error == null) { // Cache 저장된 공간에서 데이터를 불러 오는 작업 // .LoadAssetAsync("prefab 파일명",타입명) // 파일명은 assetBundle 생성시 prefab명으로 꼭 // 틀릴때의 오류 - ArgumentException: The thing you want to instantiate is null. AssetBundleRequest req = www.assetBundle.LoadAssetAsync("cube", typeof(GameObject)); yield return req; // req 불러올 때까지 대기 // 진짜 GameObject로 형변환 GameObject obj = req.asset as GameObject; // 게임오브젝트 생성 GameObject cube = Instantiate(obj); cube.transform.position = Vector3.zero; } else { // .LogError(스트링) - 콘솔에 error아이콘 표시하며 출력 // .LogWarning(스트링) - Warning 표시 Debug.LogError(www.error); } } // sfx(사운드) 가져오기 IEnumerator SFXLoad() { string url = curl + "sfx.unity3d"; WWW www = WWW.LoadFromCacheOrDownload(url, 1); yield return www; if (www.error == null) { // 묶어진 sfx.unity3d 중에 SFX2 불러옴 AssetBundleRequest req = www.assetBundle.LoadAssetAsync("SFX2", typeof(AudioClip)); yield return req; AudioClip clip = req.asset as AudioClip; // Audio Listener는 카메라의 위치에 따라 대상이 가까워지면 사운드 볼륨이 커지는 // .PlayClipAtPoint(클릭명,카메라 위치에 따른 position) - 3D 사운드 //AudioSource.PlayClipAtPoint(clip,transform.position); // 컴포넌트 가져오기 // 배경음악은 Audio Source 컴포넌트 카메라에 붙여 사용 AudioSource audio = Camera.main.GetComponent<AudioSource>(); // 사운드 출력 //.PlayOneShot(클립명, 볼륨스케일 0~1) //audio.PlayOneShot(clip, 1); // 효과음 - 한번 출력하고 종료 // 배경음악 설정 audio.clip = clip; // 클립 넣기 audio.loop = true; // 반복 audio.Play(); // 재생 audio.volume = 1; // 볼륨(0~1) } } }
Editor > CreateAssetBundle.cs 빌드 타입 변경
using UnityEngine; using UnityEditor; using System.Collections; public class CreateAssetBundle { [MenuItem("Assets/Build AssetBundle")] static void BuildAllAssetBundle() { // 유니티 버젼이 달라도 작동 안될 수 있음 // BuildPipeline.BuildAssetBundles("AssetExport"); // pc용 BuildPipeline.BuildAssetBundles("AssetExport", BuildAssetBundleOptions.None, BuildTarget.Android); // 안드로이드용 // BuildPipeline.BuildAssetBundles("AssetExport", BuildAssetBundleOptions.None, BuildTarget.iOS); // iOS용 Debug.Log("Call!!!!"); } }
*.unity3d를 다운로드 하기 위한 아파치 설정 (OS는 CentOS v6.x, 아파치 v5.1.73)#AddType 항목 어딘가에 추가 AddType application/vnd.unity unity3d참고) http://answers.unity3d.com/questions/8745/web-server-configuration-to-correctly-serve-unity.html |
서버)
- users_assetbundle-demo.zip (89.3KB) (0)
댓글 0개
| 엮인글 0개
127개(2/7페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
유니티 강좌 모음(영문) | 푸딩뱃살 | 61309 | 2013.08.28 12:02 | |
유니티 경고, 에러 모음 (재정리 예정) [1+1] | 푸딩뱃살 | 72456 | 2013.08.12 00:09 | |
105 | [참고] Unitypackage Unpacker [1+1] | 푸딩뱃살 | 4067 | 2017.08.08 17:02 |
104 | [유니티] Unite 2017 서울 - 발표 자료 링크 | 푸딩뱃살 | 5669 | 2017.05.31 10:13 |
103 | [유니티] Terrain Setting - Resolution | 푸딩뱃살 | 2817 | 2017.05.25 00:12 |
102 | [유니티] Unite 2013 - Real-time facial animation with Mixamo and | 푸딩뱃살 | 3016 | 2017.05.22 18:12 |
101 | [유니티] Unite 2016 서울 다시보기 | 푸딩뱃살 | 2654 | 2017.05.18 09:49 |
100 | [유니티] 유니티 프로그램 빌드 과정 | 푸딩뱃살 | 2588 | 2017.03.26 14:32 |
99 | [유니티] 맥os 안드로이드 SDK와 JDK 경로 | 푸딩뱃살 | 2253 | 2017.03.09 11:44 |
98 | [유니티] Failed to compile resuources with the following paramet | 푸딩뱃살 | 4506 | 2017.03.04 10:20 |
97 | [유니티] 3D파일 Animation의 Read-Only | 푸딩뱃살 | 6913 | 2016.07.22 15:13 |
96 | [스트립트] List를 사용한 코루틴 모두 실행 | 푸딩뱃살 | 3750 | 2016.04.28 01:17 |
95 | [유니티] 특정 Scene에서 Sprite 깨짐 현상 | 푸딩뱃살 | 8671 | 2016.03.03 01:27 |
94 | [유니티] 구글 플레이 서비스 에러: CommandInvokationFailure | 푸딩뱃살 | 13822 | 2016.02.29 18:51 |
93 | [스트립트] 해상도 구하기 | 푸딩뱃살 | 4028 | 2016.02.28 23:13 |
92 | [스트립트] Invoke() / InvokeRepeating() | 푸딩뱃살 | 7391 | 2016.02.04 14:45 |
91 | [스트립트] DontDestroyOnLoad() | 푸딩뱃살 | 6754 | 2016.01.29 13:20 |
90 | [스트립트] 버젼 관리 | 푸딩뱃살 | 3351 | 2016.01.20 15:48 |
89 | [유니티] 서버를 이용한 inApp 프로세스 | 푸딩뱃살 | 4035 | 2016.01.12 12:32 |
88 | [콘솔] 안드로이드 호환성 설정 - AndroidManifest.xml | 푸딩뱃살 | 1626 | 2016.01.10 16:29 |
87 | [스트립트] 전처리기 | 푸딩뱃살 | 3877 | 2016.01.05 11:36 |
>> | [유니티] Asset Bundle (애셋 번들) | 푸딩뱃살 | 4738 | 2015.12.30 11:53 |