회원 로그인
|
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개
146개(3/8페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
유니티 강좌 모음(영문) | 푸딩뱃살 | 60294 | 2013.08.28 12:02 | |
유니티 경고, 에러 모음 (재정리 예정) [1+1] | 푸딩뱃살 | 71093 | 2013.08.12 00:09 | |
104 | [콘솔] 안드로이드 호환성 설정 - AndroidManifest.xml | 푸딩뱃살 | 1561 | 2016.01.10 16:29 |
103 | [소셜] 구글 개발자 콘솔 요약 | 푸딩뱃살 | 2074 | 2016.01.08 15:49 |
102 | [유니티] Rich Text (리치 텍스트) | 푸딩뱃살 | 3032 | 2016.01.07 11:32 |
101 | [스트립트] 전처리기 | 푸딩뱃살 | 3838 | 2016.01.05 11:36 |
100 | [소셜] 안드로이드 inApp(인앱) 처리 | 푸딩뱃살 | 1422 | 2016.01.05 11:30 |
99 | [소셜] Push (문자 알림 서비스) | 푸딩뱃살 | 1821 | 2016.01.04 11:50 |
98 | [소셜] 안드로이드 inApp(인앱) 등록 | 푸딩뱃살 | 1581 | 2016.01.04 10:46 |
>> | [유니티] Asset Bundle (애셋 번들) | 푸딩뱃살 | 4697 | 2015.12.30 11:53 |
96 | [소셜] AdMob 광고 연동 | 푸딩뱃살 | 1668 | 2015.12.30 01:19 |
95 | [소셜] Google Play Games 리더보드 | 푸딩뱃살 | 2544 | 2015.12.29 16:00 |
94 | [소셜] 유니티 구글 게임 서비스 연동 | 푸딩뱃살 | 2298 | 2015.12.29 10:59 |
93 | [소셜] 구글 플레이 서비스 (Google Play Service) | 푸딩뱃살 | 2384 | 2015.12.28 10:16 |
92 | [소셜] UnityAds 유니티 광고(Unity Advertisement) 연동 | 푸딩뱃살 | 2808 | 2015.12.24 12:09 |
91 | [유니티] 안드로이드 빌드 | 푸딩뱃살 | 5917 | 2015.12.21 10:41 |
90 | [스트립트] 프레임 함수-유니티가 시작되면서 호출되는 기본적인 함수 | 푸딩뱃살 | 4517 | 2015.12.14 00:22 |
89 | [유니티] Trail Renderer (트레일 렌더러) | 푸딩뱃살 | 2784 | 2015.12.11 17:25 |
88 | [유니티] Character Controller (캐릭터 컨트롤러) | 푸딩뱃살 | 3130 | 2015.12.10 14:18 |
87 | [유니티] Materials (매터리얼) 예제 | 푸딩뱃살 | 2374 | 2015.12.09 12:17 |
86 | [유니티] Light (라이트) | 푸딩뱃살 | 2966 | 2015.12.09 10:52 |
85 | [유니티] Physics.Linecast() / Physics.Raycast() | 푸딩뱃살 | 3984 | 2015.12.08 12:56 |