首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从unity 2018中的Asset Bundle加载场景

在Unity 2018中,您可以使用AssetBundle.LoadAsset方法从AssetBundle加载场景

  1. 首先,确保您已经创建了一个包含场景的AssetBundle。如果尚未创建,请参阅Unity官方文档中的创建AssetBundle部分。
  2. 将AssetBundle文件放在一个可访问的位置,例如项目的Assets/StreamingAssets文件夹中。
  3. 在Unity编辑器中,创建一个新的C#脚本(例如LoadSceneFromAssetBundle.cs),并将其附加到一个GameObject上。
  4. 编辑脚本,添加以下代码以从AssetBundle加载场景:
代码语言:javascript
复制
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadSceneFromAssetBundle : MonoBehaviour
{
    public string assetBundlePath = "file://" + Application.streamingAssetsPath + "/your_asset_bundle_name";
    public string sceneName = "YourSceneName";

    void Start()
    {
        StartCoroutine(LoadScene());
    }

    IEnumerator LoadScene()
    {
        using (WWW www = new WWW(assetBundlePath))
        {
            yield return www;

            AssetBundle assetBundle = www.assetBundle;
            if (assetBundle == null)
            {
                Debug.LogError("Failed to load AssetBundle!");
                yield break;
            }

            SceneAsset sceneAsset = assetBundle.LoadAsset<SceneAsset>(sceneName);
            if (sceneAsset == null)
            {
                Debug.LogError("Failed to load scene from AssetBundle!");
                yield break;
            }

            SceneManager.LoadScene(sceneAsset.name);
        }
    }
}

请确保将assetBundlePath变量设置为AssetBundle文件的正确路径,并将sceneName变量设置为要加载的场景名称。

  1. 保存脚本并返回Unity编辑器。将脚本附加到一个GameObject上,然后运行游戏。游戏应该会从AssetBundle加载并显示指定的场景。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 Unity 引擎打造免安装游戏

/topic/google-play-instant/best-practices/games 使用Asset Bundle Asset Bundle允许您在免安装游戏运行时动态加载资源。...如果资源直到运行时才被下载,就不会被计入13.5 MB的限制。这是游戏开发者减少免安装游戏体积的常用方法。以下三个要素不可或缺: 基于您的免安装游戏中的场景创建的Asset Bundle。...一个用户友好的加载屏幕,可以在下载Asset Bundle时告知用户。...2.选择"Bundle Creation"选项卡,然后选择要动态加载的场景。...现在您已经得到了一个加载屏幕,它将用于动态加载您的Asset Bundle。这个加载屏幕的源代码已经由Unity自动生成,您可以进入到这个新的场景中查看细节并进行定制。

1.6K10

AssetBundle详解

也可以加载开发者自定义的二进制文件。他们的文件类型是.assetbundle/.unity3d,他们先前被设计好,很容易就下载到我们的游戏或者场景当中。...一般情况下AssetBundle的具体开发流程如下: (1)创建Asset bundle,开发者在unity编辑器中通过脚本将所需要的资源打包成AssetBundle文件。 (2)上传服务器。...因此本小节将主要关注如何在运行时获取AssetBundle的对象,关于如何从AssetBundle中加载资源将在下一小节中分析。...四:AssetBundle服务器下载 我们采用下面的案例,场景进入的时候,依次从服务器给三个已经创建的对象加载纹理,材质,以及根据预设创建一个新的对象。...在 Objects 被从场景中移除的时候,Unity 不会自动将它们卸载。资源的清理是在某个特定时机被触发,当然也可以手动触发。 知道什么时候加载和卸载一个 AssetBundle 很重要。

1.9K10
  • GameFramework:Resource加载,资源加载,依赖加载,任务池,对象池,引用计数

    如何从asset名索引到对应bundle名 下面信息从描述文件获得,把GameFrameworkVersion.dat 文件中的 bundle ,asset ,asset的依赖项的关系,从文件中int[...从assets开始的全路径就可以加载资源,而不需要记忆resource名字 private Dictionary m_AssetInfos; //用于描述 Unity...; //resource引用计数,object即assetbundle 每次加载asset,对应所有依赖项asset+1,依赖的bundle根据自己内部的asset被依赖次数 +1 每次卸载asset...);中移除正在加载资源 所有被依赖的Resource引用+1 引用计数 每次加载asset,对应所有依赖项asset+1,依赖的bundle根据自己内部的asset被依赖 +1 每次卸载asset...m_ResourceLoader.m_AssetPool.Register(assetObject, true); 因为目标asset会一直等待所有依赖的asset加载完毕,才开始自身bundle加载

    76320

    GameFramework:打包资源,打随app发布包,打包生成文件夹说明,上传资源至服务器,下载资源,GameFreamworkList.dat 与GameFrameworkVersion.dat

    、场景 AssetBundle 和非场景 AssetBundle 分别用三种不同的图标标识。...② 重命名选中的 AssetBundle。 ③ 移除选中的 AssetBundle。 ④ 更改 AssetBundle 的加载方式,可选择从文件加载、从内存加载,或者是从内存中解密后加载等。...随后热更是根据服务器文件列表与app安装后释放到的可读写路径下随包packed,再做差异更新 是否使用文件系统 只能在xml中手动配置,代表下载完后会把几个零散的ab文件合成一个文件 如何避免冗余.../// public sealed class Asset : IComparableAsset> { private Asset(string...打入a.bundle,会从原来所在的b.bundle移除 bundle:TestNew中塞入asset->{“Guid”:“4a17d2c656f5c6b44a31e3ee547a76b0” Bundle

    79830

    一个非常好用的AssetBundle资源加载器

    Loxodon Framework Bundle是一个非常好用的AssetBundle加载器,也是一个AssetBundle冗余分析工具。...它支持多种加载方式,WWW加载,UnityWebRequest加载,File方式的加载等等(在Unity5.6以上版本,请不要使用WWW加载器,它会产生内存峰值)。...同时它也绕开了Unity3D早期版本的一些bug,比如多个协程并发加载同一个资源,在android系统会出错。它的冗余分析是通过解包AssetBundle进行的,这比在编辑器模式下分析的冗余更准确。...AssetBundle资源可以存在Unity3D的缓存中,也可以存在持久化目录中或者在StreamingAssets目录中,关于如何存储资源,一般和项目怎么更新资源有关系,在我的CustomBundleLoaderBuilder...result.AllowSceneActivation = true; } }); } 3.通过协程的方式加载场景

    2.7K30

    黑神话上线了,想起来学Lua了?

    于是我们进一步删繁就简,从 Unity 引擎和语言层面本身的能力挖掘,最终调研了一个不依赖任何库、仅仅使用 Unity 本身和 C# 语言能力就到热更新的返璞归真方案:Asset Bundle + 替换...我们的方案中为了达到简洁少依赖的目的,采用 Asset Bundle 打包热更新资源与代码,包括场景资源以及代码 dll,并动态加载并动态绑定给物体(这里后续需要做一些安全校验保证文件在传输中不被篡改)...正确拉取服务端的 Asset Bundle 包,加载其中资源与代码,并执行其中的业务入口方法。 在指定路径缓存上次更新好的 Asset Bundle 包,快速加载。...采用 Asset Bundle 打包热更新资源,包括场景资源以及 dll 以 TextAsset 形式加载并动态绑定给 GameObject,详见 C# 代码动态加载方案。...设置 Asset Bundle 打包,每次更新 dll,对于 unity 来说都属于识别了一个新文件,需要重新编制其 Asset Bundle 打包索引。

    86642

    黑神话上线了,想起来学Lua了?

    于是我们进一步删繁就简,从 Unity 引擎和语言层面本身的能力挖掘,最终调研了一个不依赖任何库、仅仅使用 Unity 本身和 C# 语言能力就到热更新的返璞归真方案:Asset Bundle + 替换...我们的方案中为了达到简洁少依赖的目的,采用 Asset Bundle 打包热更新资源与代码,包括场景资源以及代码 dll,并动态加载并动态绑定给物体(这里后续需要做一些安全校验保证文件在传输中不被篡改)...正确拉取服务端的 Asset Bundle 包,加载其中资源与代码,并执行其中的业务入口方法。在指定路径缓存上次更新好的 Asset Bundle 包,快速加载。...采用 Asset Bundle 打包热更新资源,包括场景资源以及 dll 以 TextAsset 形式加载并动态绑定给 GameObject,详见 C# 代码动态加载方案。...设置 Asset Bundle 打包,每次更新 dll,对于 unity 来说都属于识别了一个新文件,需要重新编制其 Asset Bundle 打包索引。

    20110

    黑神话上线了,想起来学Lua了?

    于是我们进一步删繁就简,从 Unity 引擎和语言层面本身的能力挖掘,最终调研了一个不依赖任何库、仅仅使用 Unity 本身和 C# 语言能力就到热更新的返璞归真方案:Asset Bundle + 替换...我们的方案中为了达到简洁少依赖的目的,采用 Asset Bundle 打包热更新资源与代码,包括场景资源以及代码 dll,并动态加载并动态绑定给物体(这里后续需要做一些安全校验保证文件在传输中不被篡改)...正确拉取服务端的 Asset Bundle 包,加载其中资源与代码,并执行其中的业务入口方法。在指定路径缓存上次更新好的 Asset Bundle 包,快速加载。...采用 Asset Bundle 打包热更新资源,包括场景资源以及 dll 以 TextAsset 形式加载并动态绑定给 GameObject,详见 C# 代码动态加载方案。...设置 Asset Bundle 打包,每次更新 dll,对于 unity 来说都属于识别了一个新文件,需要重新编制其 Asset Bundle 打包索引。

    25310

    【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事

    如何做资源管理和增量更新 Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解 Unity3D中实现按资源名称自动化命名打包AssetBundle Unity...obj = GameObject.Instantiate(bundle.Load("MyPrefab")) as GameObject;     对于从Bundle中加载出来的Prefab,可以理解为我们直接从资源目录下拖到脚本上的一个...也不能再用,如果要再用,需要重新加载Bundle,需要注意的是,依赖这个Bundle的其他Bundle,在Load的时候,会报错     得到Bundle之后,我们用Bundle.Load来加载资源,这些资源会从...Bundle的内存被复制出来,作为Asset放到内存中,这意味着,这块内存,也很大,Asset内存的释放,与Unity其他资源的释放机制一样,可以通过Resources.UnloadUnuseAsset...Bundle的Bundle不需要再Load之后,Unload这个Bundle,一般出现在大场景切换的时候。

    3.4K31

    5.0版本之后的AssetBundle资源的打包和解析加载(Unity3D)

    ,让人不能快速的get到这个东西如何使用 所以我特意在踩过坑之后把我这个学到的经验分享给大家。...AssetBundle和加载的方法 10.Unity中 BundleAsset资源的打包和解析加载 PS:从参考的文章就知道踩了多少坑了 ---- 三、AssetBundle打包方式 3.1 API...cube.unity3d # 四、AssetBundle解析加载 ## 4.1 API讲解 ### 4.1.1 加载AssetBundle的API !...request = bundle.LoadAssetAsync("Cube.prefab", typeof(GameObject)); go = Instantiate(request.asset...LoadBundles.cs挂载在场景中的任意物体上 成功加载生成 PS:途中的Cube是我设置好的Cube预制体,加上了一个材质 OK,文章结束 PS:如果想要加载网上资源,就把打包好的包放到服务器上

    52110

    AssetBundle 详解

    (true) AssetBundle.Unload(false) 如何选择用哪种方式 修补 AssetBundle 常见问题 依赖包重复问题 图集重复问题 Android 贴图问题 Unity Asset...普通 AssetBundle 的结构: 场景 AssetBundle 与普通 AssetBundle 的不同之处在于,它针对场景及其内容的串流加载进行了优化。...采用此种方式卸载,从该 AssetBundle 加载的纹理(并且仍然属于它)会从场景中的游戏对象消失,因此 Unity 将它们视为缺少纹理。...AssetBundle.Unload(false) 卸载所有没用被使用的资源 此种方式可能会在内存中产生大量复制对象 如何选择用哪种方式 假设材质 M 是从 AssetBundle AB 加载的,如下所示...Unity Asset Bundle Browser 工具 下载后,直接将 Editor 文件夹放在自己的项目目录下,此工具使用户能够查看和编辑 Unity 项目的资源包的配置。

    2.3K50

    【Unity面试篇】Unity 面试题总结甄选 |Unity进阶篇 | ❤️持续更新❤️

    如何安全的在不同工程间安全 地迁移asset数据?...Assetsbundle:即将资源打成 asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object,unity官方推荐也是绝大多数商业化项目使用的一种方式...(LAMA压缩,压缩率高,解压久) UncompressedAssetBundle Don’t compress the data when creating the asset bundle....//获取要加载的资源路径【bundle的总说明文件】 path+=assetBundle+"/"+assetBundleRootName; //加载 WWW www=WWW.LoadFromCacheOrDownload...i=0;i<dependencies.Length;i++) { //获取到依赖Bundle的路径 string depPath=path+ dependencies[i]; //获取新的路径进行加载

    2.6K23

    Unity 热更新技术 | (二) AssetBundle - 完整系列教程学习

    一个与Asset同级目录,另一个则是在Assets/StreamingAssets文件夹下。 其中有一个主包文件和对应的AB包资源文件。...若参数为true表示将会把使用该AB包的场景资源也全部卸载,反之则不会 ab.Unload(false); 下面是几种常用的AB包加载方式,简单记录一下: 异步加载:AssetBundle.LoadFromMemoryAsync.../// /// 从磁盘上的文件同步加载 AssetBundle。...加载后使用 assetBundle 属性获取 AssetBundle。 从磁盘上的文件异步加载 AssetBundle。 该函数支持任意压缩类型的捆绑包。...可以按照关卡分,一个关卡所需要的所有资源包括角色、贴图、声音等打成一个包。也可以按照场景分,一个场景所需要的资源一个包 按更新频率分组 不经常更新的放在一个包,经常更新的放在一个包分别管理。

    3.2K33

    Unity3d:GameFramework解析:实体,对象池,资源管理,获取计数,引用计数,自动释放

    -1 2.销毁asset实例出来的GameObject ResourceObject 何时引用+1 在assetA加载完,assetA的依赖asset的bundle引用+1。...注意是依赖的asset的bundle,自身的bundle并不会引用+1 GameFramework.Resource.ResourceManager.ResourceLoader.LoadResourceAgent.OnLoadResourceAgentHelperLoadComplete...此时有有两种情况, 1.执行加载asset任务时,主bundle已加载,从ResourcePool中获取 GameFramework.Resource.ResourceManager.ResourceLoader.LoadResourceAgent.Start...(assetObject); return StartTaskStatus.Done; } 2.AssetPool没有,从Assetbundle中加载完成asset,创建新AssetObject...asset任务 加载一个实体,一个asset作为主任务,asset依赖的各个asset作为依赖任务 单个asest任务加载任务执行 任务 任务派生LoadAssetTask,LoadDependencyAssetTask

    84430

    【Unity面试篇】Unity 面试题总结甄选 |热更新与Lua语言 | ❤️持续更新❤️

    AssetBundle的具体开发流程 创建Asset bundle,开发者在unity编辑器中通过脚本将所需要的资源打包成AssetBundle文件。 上传服务器。...加载,通过Unity提供的API可以加载资源里面包含的模型、纹理图、音频、动画、场景等来更新游戏客户端。 卸载AssetBundle,卸载之后可以节省内存资源,并且要保证资源的正常更新。 5....UnloadUnusedAssets:用于释放所有没有引用的Asset对象 Destroy:主要用于销毁克隆对象,也可以用于场景内的静态物体,不会自动释放该对象的所有引用。...虽然也可以用于Asset,但是概念不一样要小心,如果用于销毁从文件加载的Asset对象会销毁相应的资源文件!但是如果销毁的Asset是Copy的或者用脚本动态生成的,只会销毁内存对象。 8....如何解析版本文件?如何加载AB包资源?具体流程是怎么样的?

    1.4K31

    AssetBundle使用模式

    Objects被移出激活的场景时,Unity不会自动卸载他们。Asset的清理会在特定的时间触发,当然也可以手动触发。 必须小心的管理AssetBundles自身文件。...举例来说,假设材质M从AssetBundleAB中加载,并且假设M当前正在激活的场景中。 如果AB.Unload(true)被调用,那么M将会从场景中被移除,销毁和卸载。...要使用WebClient下载一个Asset Bundle,可以直接创建一个实例,并传入AssetBundle的下载地址,还有目标路径。...Asset分配策略 决定如何划分项目的assets到AssetBundle,并不简单。...苹果的按需加载资源系统的概述可以在这找到Apple开发者网站. 从Unity5.2.1开始,对于App Slicing和按需资源的支持都建立在另一个Apple系统上:Asset Catalogs。

    2.2K20

    Unity网络交互☀️AssetBundle一、:用途、创建、解读、接口

    在Unity中可以为任何资源创建AssetBundle,AssetBundle包含模型、贴图甚至脚本(有限制),我们可以将这些资源从游戏的主要版本中分离出来,减少最后游戏包的大小,再通过网络下载这些资源...具体使用流程: 1、利用脚本创建AssetBundle文件 2、上传到服务器 3、下载到本地 4、加载 创建AssetBundle资源 1️⃣ AssetBundle可打包的资源 a、任意Unity引擎可识别的资源...例如模型、纹理、音频、动画片段甚至场景等 b、将Unity不能识别的二进制文件后缀名改为,bytes,Unity即可识别为TextAsset文件,进而可打包到AssetBundle 2️⃣ AssetBundle...但在安卓端,不能加载AB包中的视频,Unity官方说不打算支持该功能 链接 // ======================================================== //...with name of type T from the bundle.

    23910

    unity3d:YooAsset零冗余构建Assetbundle代码分析

    _referenceBundleNames 在处理数据时,如果一个依赖asset会被打入多个bundle,在这里记录,则视为冗余asset 这个bundle列表如何得到?...在构建时unity自动收集依赖进入bundle 2.共享bundle包,里面只有依赖asset 依赖asset列表 每个BuildAssetInfo又会包含List...对应的bundle YooAsset.Editor.TaskGetBuildMap.CreateBuildMap BuildBundleInfo字典 key为bundle的名字,路径/换成_,从assets...会被打入bundleA AB依赖C,AB在不同Bundle 这种情况下C会打入共享包 bundle内容为空,因为被依赖asset不会通过代码加载 记录冗余资源 计算共享报名,已经去掉了冗余资源...:把冗余asset的bundle变为文件夹路径名 如果asset有bundle名,一定不是冗余 对于没有bundle名的看,是否被2个引用 移除不参与构建的资源 如果一个asset的BuildAssetInfo.bundleName

    1.6K20
    领券