회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인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 | 조회 4696
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


서버)

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