标签:根目录 转化 平台 sub anti ted using null disk
1、单一文件创建unity3d
using UnityEngine;
using UnityEditor;
using System.IO;
public class BuildAssetBundlesFromDirectory {
[@MenuItem("Asset/Build AssetBundles From Directory of Files")] //生成菜单
static void ExportAssetBundles () {
// Get the selected directory
//获取选择的目录
string path = AssetDatabase.GetAssetPath(Selection.activeObject);
Debug.Log("Selected Folder: " + path);
if (path.Length != 0) {
path = path.Replace("Assets/", "");
string [] fileEntries = Directory.GetFiles(Application.dataPath+"/"+path);
foreach(string fileName in fileEntries) {
string filePath = fileName.Replace("\\","/");
int index = filePath.LastIndexOf("/");
filePath = filePath.Substring(index+1);
Debug.Log("filePath:"+filePath);
string localPath = "Assets/" + path+"/";
if (index > 0)
localPath += filePath;
Object t = AssetDatabase.LoadMainAssetAtPath(localPath);
if (t != null) {
Debug.Log(t.name);
string bundlePath = "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);
}
}
}
}
}
说明:string filePath = fileName.Replace("\\","/"); 把“\”转化成“/”。把以上代码的脚本放到一个文件夹里面(须放在Assets\Editor目录下面),选中该文件夹,再点击菜单栏上的按钮"Asset/Build AssetBundles From Directory of Files",就成功转成unity3d格式了。
2、单一文件unity3d格式的加载
function Start () {
var www = new WWW ("file:///"+Application.dataPath+"/resourse/Cube.unity3d");//Windows
yield www;
Instantiate(www.assetBundle.mainAsset);
}
function Start ()
{
var www = WWW.LoadFromCacheOrDownload("http://210.30.12.33:8080/YangChun/file/Cube.unity3d",5); //webPlayer
yield www;
if (www.error != null)
{
Debug.Log (www.error);
return;
}
Instantiate(www.assetBundle.mainAsset);
}
3、场景转化成unity3D格式
@MenuItem ("Build/BuildScene")
static function MyBuild(){
var levels : String[] = ["Assets/main.unity"]; //main为场景名称
BuildPipeline.BuildStreamedSceneAssetBundle( levels, "test.unity3d", BuildTarget.WebPlayer);//BuildTarget.Andrdoid “test.unity3d”为生成的文件名称
}
//或者
@MenuItem ("Build/BuildScene")
static function MyBuild(){
BuildPipeline.BuildPlayer(["Assets/main.unity"],"test.unity3d",BuildTarget.WebPlayer, BuildOptions.BuildAdditionalStreamedScenes);
}
说明:默认生成的文件是在工程根目录下面,同样此文件得放在Assets\Editor目录下面;BuildTarget,转化成不同的平台,这个根据实际需要设置即可。
4、unity3D场景文件加载
function Start () {
// Download compressed scene. If version 5 of the file named "test.unity3d" was previously downloaded and cached.
// Then Unity will completely skip the download and load the decompressed scene directly from disk.
//下载压缩的场景。如果名为test.unity3d的文件版本为5,预先下载并缓存。
//然后Unity将完全跳过下载并直接从磁盘加载解压的场景。
var download = WWW.LoadFromCacheOrDownload ("file:///"+Application.dataPath + "/test.unity3d", 5);
// var download = WWW.LoadFromCacheOrDownload ("http://myWebSite.com/test.unity3d", 5);
print(Application.dataPath + "/test.unity3d");
yield download;
// Handle error
if (download.error != null)
{
Debug.LogError(download.error);
return;
}
// In order to make the scene available from LoadLevel, we have to load the asset bundle.
// The AssetBundle class also lets you force unload all assets and file storage once it is no longer needed.
//为了使场景LoadLevel可用,必须加载资源包
//AssetBundle类,还可以强制卸载所有的资源和文件存储,一旦不再需要。
var bundle = download.assetBundle;
// Load the level we have just downloaded
//加载刚才下载的场景
Application.LoadLevel ("main");
}
标签:根目录 转化 平台 sub anti ted using null disk
原文地址:http://www.cnblogs.com/yangmingyu/p/6928219.html