.unity3d格式的导出与加载

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");
}

时间: 2024-10-30 06:31:06

.unity3d格式的导出与加载的相关文章

Unity3d热更新全书-资源加载(一)从AssetBundle说起

Unity3D动态下载资源,有没有解?有,AssetBundle就是通用解,任何一本书都会花大幅篇章来介绍AssetBundle. 我们也来说说AssetBundle 我们试全面的分析一下Unity3D提供的资源加载机制 1.Resources//内嵌资源,使用方法Resources.Load,可以加载任意种类的资源,不能动态修改,卒. 2.StreamingAssets//随包资源,使用方法IO或WWW.Load.WWW.Load可以加载任意种类资源,IO仅限bytes 和 text. 3.W

Unity3d修炼之路:加载一个预制体,然后为该对象添加组件,然后查找对象,得到组件。

#pragma strict function Awake(){ //加载一个预制体 资源必须在 Resources文件夹下 Resources.LoadLoad(); //加载后 必须示例化 GameObject.Instantiate(); //为对象添加组件 AddComponent(); //Find游戏对象 Find(); //Get组件 GetComponent(); var pPrefab : GameObject = Resources.Load("Prefab/Scence&q

Matlab中怎样将.dat格式的文件进行加载转化为一个矩阵??

在网上下载了一个数据集rating.dat,格式为.dat的,要在matlab中使用,必须将其转化为一个.mat格式的矩阵,下面写一下具体步骤: 第一步:打开matlab,界面如图: 然后点击“打开”选项:界面如下 例如选择rating.dat 文件 点击上图右下角“打开”,得到如下界面: 然后在“列分隔符”里进行选择,由于原文本文件格式如下图: 所以选择“列分隔符”中的::,然后选中所有数据,再点击"导入",选择其中的“导入数据”,则得到结果为m*4的矩阵:

Unity3D协同函数与异步加载功能实战 学习

类似于INI格式的配置文件的加载及解析

/* ****************************************************************** * NAME: config.cpp * DESC: * AUTHOR: Liu Dongguo([email protected]) * VERSION: 1.0 * CREATE: 2015-04-13 01:06:28 * LUTIME: 2015-04-14 16:43:37 * * Copyright (c) 2007 - 2015 Abodu.c

Glide终于解决了同时加载webp格式图片的问题

前端时间,要给项目换个图片加载的库,使用Glide 3.7版本进行测试, 发现在快速滑动列表(每个item都会加载一个app的图标,采用webp格式,即同时加载多个webp格式)的时候,一屏至少有2-3个出现加载失败的情况(看LOG), 加载单个的webp格式是OK的: 但是采用png是OK的:后来只好采用picasso来加载图片, 现在项目需要加载Gif图片,所以又想到了glide. 今天用Glide 4.0.0版本进行测试,列表加载webp格式是OK了. 当然Glide 4.0.0 相比 3

内存加载DLL

1.前言 目前很多敏感和重要的DLL(Dynamic-link library) 都没有提供静态版本供编译器进行静态连接(.lib文件),即使提供了静态版本也因为兼容性问题导致无法使用,而只提供DLL版本,并且很多专业软件的授权部分的API,都是单独提供一个DLL来完成,而主模块通过调用DLL中的接口来完成授权功能.虽然这些软件一般都采用了加壳和反调试等保护,但是一旦这些功能失去作用,比如脱壳,反反调试,HOOK API或者干脆写一个仿真的授权DLL(模拟授权DLL的所有导出函数接口),然后仿真

cocos2d-x 图片纹理优化 资源加载方案

原文地址:http://blog.sina.com.cn/s/blog_64d591e80101me1y.html 文章主要解决了我一直以来疑惑的几个问题 1.到底用不用2的N次幂的图片 2.为什么加载资源的时候,内存会突然飙高 3.内存突然飙高的解决方案 4.如何解决程序在加载资源卡的问题 首先是cocos2d-x官网上的优化建议 一帧一帧载入游戏资源 减少绘制调用,使用"Use CCSpriteBatchNode" 载入纹理时按照从大到小的顺序 避免高峰内存使用 使用载入屏幕预载入

游戏关卡是酱紫加载的,你造吗?

游戏属于实时交互程序,需要每秒渲染若干帧(例如30帧),让用户感觉画面和操作是连续的.而从硬盘中加载游戏资源往往是一个比较长时间的过程(至少不能在1 / 30秒内加载完),所以需要显示加载游戏的过渡画面,本文将对常见的关卡过渡画面及其对应的资源加载方式进行分析. 1 同步加载方案 游戏之所以看起来是连续的,是因为每秒渲染若干帧(例如30帧),如果使用同步I/O的方式加载资源,那么在资源加载完成之前,由于没有渲染,画面自然持续不变了.当然,游戏要加载的资源很可能并不只是一个文件,所以在从硬盘读取一