Unity中AssetBundle二

将游戏场景导出 为.unity3d,然后使用 WWW加载进来,跳转到该场景

 

一、选择场景文件



点击 “BuildWlayerStreamed”弹出如下窗口,选择需要保存的路径,点击保存即可生成相应的文件



运行程序调用 WWW加载进场景文件


做法如下

在Editor文件夹下创建脚本TestWWW

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;

//打包场景
//BuildPipeline.BuildStreamedSceneAssetBundle(levels, path, 
//               target, BuildOptions.UncompressedAssetBundle));
//打包资源
//  BuildPipeline.BuildAssetBundle(null, assets, path, 
//            BuildAssetBundleOptions.UncompressedAssetBundle | 
//            BuildAssetBundleOptions.CollectDependencies, target);

public class TestWWW
{
    //将场景打包
    [MenuItem("Assets/BuildWlayerStreamed")]
    static void BuildScenes()
    {
        string[] levels = new string[1];
        levels[0] = "Assets/scene.unity";
        Caching.CleanCache(); //清空一下缓存
        //弹出窗口选择保存路径
        string path = EditorUtility.SaveFilePanel("Save Resource", "", "", "unity3d");
        Debug.Log(path);
        //打包场景
        // 参数1 为 需要导出的场景路径数组, 参数2导出路径, 参数3导出的平台,
        //(每个平台必须对应,不然平台不认, 会出现丢失贴图等等问题),参数4为类型选项
        BuildPipeline.BuildStreamedSceneAssetBundle(levels, path,
            BuildTarget.StandaloneWindows, 
            BuildOptions.BuildAdditionalStreamedScenes);
    }
}



创建 Loadd脚本,将脚本拖拽到场景中的对象

using UnityEngine;
using System.Collections;
using System;
using System.IO;

public class Loadd : MonoBehaviour
{
    private AssetBundle assetBundle;
    private AssetBundleCreateRequest request;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            StartCoroutine( LoadScene());
        }
    }
    /*
       使用的方法是WWW.LoadFromCacheOrDownload(path,5);
       参数1:服务器或者本地下载地址
       参数2:版本号
       Unity会下载Assetbundle本地中,它的工作原理是先通过(版本号和下载地址)
     * 先在本地去找看有没有这个Assetbundle,如果有直接返回对象,
     * 如果没有的话,在根据这个下载地址重新从服务器或者本地下载。
     * 这里版本号起到了很重要的作用,举个例子,同一下载地址版本号
     * 为1的时候已经下载到本地,此时将版本号的参数改成2 那么它又
     * 会重新下载,如果还保持版本号为1那么它会从本地读取,因为本
     * 地已经有版本号为1的这个Assetbundle了。你不用担心你的资源本
     * 地下载过多,也不用自己手动删除他们,这一切Unity会帮我
     * 们自动完成,它会自动删除掉下载后最不常用的Assetbundle ,如果
     * 下次需要使用的话只要提供下载地址和版本后它会重新下载。
     * */

    IEnumerator LoadScene()
    {
        WWW www = WWW.LoadFromCacheOrDownload
            ("file:///C:/Users/Administrator/Desktop/AssetBundl/ddd.unity3d", 1);
        yield return www;

        if (www.error != null)
        {
            throw new Exception(www.error);
        }

        if (www.isDone)
        {
            AssetBundle assetBundle = www.assetBundle;      
            Application.LoadLevel("scene"); // 加载场景         
        }
    }
}
























  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值