首页
学习
活动
专区
工具
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.8K10
  • GameFramework:Resource加载,资源加载,依赖加载,任务池,对象池,引用计数

    如何asset名索引到对应bundle名 下面信息描述文件获得,把GameFrameworkVersion.dat 文件中 bundleassetasset依赖项关系,文件中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加载

    69520

    一个非常好用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.6K30

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

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

    67330

    黑神话上线了,想起来学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 打包索引。

    78642

    黑神话上线了,想起来学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 打包索引。

    15510

    黑神话上线了,想起来学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 打包索引。

    15910

    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...BundleBundle不需要再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 加载AssetBundleAPI !...request = bundle.LoadAssetAsync("Cube.prefab", typeof(GameObject)); go = Instantiate(request.asset...LoadBundles.cs挂载在场景任意物体上 成功加载生成 PS:途中Cube是我设置好Cube预制体,加上了一个材质 OK,文章结束 PS:如果想要加载网上资源,就把打包好包放到服务器上

    49910

    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.2K50

    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.3K22

    AssetBundle使用模式

    Objects被移出激活场景时,Unity不会自动卸载他们。Asset清理会在特定时间触发,当然也可以手动触发。 必须小心管理AssetBundles自身文件。...举例来说,假设材质MAssetBundleAB中加载,并且假设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 - 完整系列教程学习

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

    3K22

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

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

    1.2K31

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

    -1 2.销毁asset实例出来GameObject ResourceObject 何时引用+1 在assetA加载完,assetA依赖assetbundle引用+1。...注意是依赖assetbundle,自身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

    78630

    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.

    16910

    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不会通过代码加载 记录冗余资源 计算共享报名,已经去掉了冗余资源...:把冗余assetbundle变为文件夹路径名 如果assetbundle名,一定不是冗余 对于没有bundle看,是否被2个引用 移除不参与构建资源 如果一个assetBuildAssetInfo.bundleName

    1.4K20
    领券