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

     

  • 相关阅读:
    Threejs学习 一
    Mapbox的表达式
    mapbox 不加载地图
    SQL Server将查询出数据进行列转行操作
    SQL Server 常用近百条SQL语句(收藏版)
    SQL Server DATEDIFF() 函数用法
    SQL Server 数据库开启日志CDC记录,导致SQL Server 数据库日志异常增大
    查询SQL Server数据库使用的版本号信息
    windows 无法启动 SQL Server (MSSQLSERVER) 服务(位于本地计算机上)。错误 1069由于登入失败而无法启动 。
    SQL Server 不同数据间建立链接服务器进行连接查询
  • 原文地址:https://www.cnblogs.com/fm168/p/3092853.html
Copyright © 2020-2023  润新知