회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


Asset Bundle (애셋 번들)

푸딩뱃살 | 2015.12.30 11:53 | 조회 4737
Asset Bundle
:구글플레이, 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


서버)

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