Unity nâng cao>>P2 >> Build Asset Bundle

Thứ Năm, 16 tháng 6, 2011
Đây là bài viết dành cho các bạn muốn tạo ra các tài nguyên để load runtine. Tài nguyên của bản sẽ được để trên một hosting nào đó, nó sẽ rất hứu ích nếu bạn muốn phát triển game có sự thay đổi liên tục các tài nguyên. Bài viết này tuy chưa ở mức cao nhưng nó là cơ sở cho các bạn nghiên cứu sâu hơn về Asset Bundle.
(Các bạn basic cần học thêm mới thao tác được kỹ năng này)

Bước 1: Tạo project mới tên là BuildAssets, save scence với tên MakeBundleAssets
Bước 2: Tạo 1 folder để chứa các tài nguyên cần xuất có tên: ExportBundleAssets
Bước 3: Tạo 1 cube, sau đó tạo một prefab chứa cube đó với tên "cube_prefab", sau đó kéo vào trong ExportBundleAssets
Bước 4: Tạo một Javascript có tên MakeAssetBundle và sử dụng đoạn code sau:

import System.IO;

//dat tat ca cac tai nguyen vao trong mot thu muc

//Assets/Ten_thumuc: trong vi du nay ta dung thu muc "MakeAssetBundle "

//www.3din.com.vn

function Start() {

var path: String = AssetDatabase.GetAssetPath(Selection.activeObject);

Debug.Log("Selected Folder: " + path);

if (path.Length != 0) {

path = path.Replace("Assets/", "");

var fileEntries: Array = Directory.GetFiles(Application.dataPath+"/"+path);

for(var fileName: String in fileEntries) {

var filePath: String = fileName.Replace(" ", "/");

filePath = filePath.Replace("\\","/");

var index: int = filePath.LastIndexOf("/");

filePath = filePath.Substring(index);

Debug.Log(filePath);

var localPath: String = "Assets/" + path;

if (index > 0)

localPath += filePath;

var t: Object = AssetDatabase.LoadMainAssetAtPath(localPath);

if (t != null) {

Debug.Log(t.name);

var bundlePath: String = "Assets/" + path + "/" + t.name + ".unity3d";

Debug.Log("Building bundle at: " + bundlePath);

// Build the resource file from the active selection.

BuildPipeline.BuildAssetBundle(t, null, bundlePath, BuildAssetBundleOptions.CompleteAssets);

}

}

}

}

Bước 5: Chọn thư mục ExportBundleAssets sau đó nhấn Play. Bạn sẽ nhìn thấy chương trình tạo cho chúng ta tài nguyên AssetBundle với đuôi .unity3D

Việc load tài nguyên chúng ta sẽ dùng câu lệnh:

var www = WWW ("http://www.3din.com.vn/cube_prefab.unity3d");

yield www;

if (www.error != null){

Debug.Log(www.error);

}else{

// Get the designated main asset and instantiate it.

var assetB = www.assetBundle.Load("cube");

var obj = Instantiate (assetB, transform.position, Quaternion.identity);

}

Với câu lệnh: http://www.3din.com.vn/cube_prefab.unity3d
"http://www.3din.com.vn/" Chính là host chứa tài nguyên của tổi, đây là một host được thiết lập security và mine type để cho phép Unity truy cập.
Các bạn có thể tạo ra trên localhost của mình và copy tài nguyên .unity3d vào đó, và thử truy cập.

Chú ý: Các bạn có thể xuất các tài nguyên là Code, Prefab,...

Nếu cần support thì đừng ngại liên hệ với chúng tôi. Chúc các bạn thành công.
Xem thêm bài viết cùng chuyên mục:

Ý kiến bạn đọc [ 0 ]


Ý kiến của bạn