AssetBundle(三) 场景和Navmesh的加载

本文介绍如何使用Unity的AssetBundle加载场景,强调在加载场景前需先加载场景Bundle,并利用GetAllScenePaths()接口配合SceneManager.LoadScene进行加载。同时指出Navmesh在烘焙后不需要单独加载或打包,其已包含在场景信息中。注意,场景Bundle的卸载需特别管理,因为它们没有资源引用计数,而是基于bundle的引用计数来管理释放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇:Assetbunle(二)热更新方案设计     

下一篇 Assetbundle(四)ToLua对接

       场景用SceneManager.LoadScene函数加载。如果场景已经用Assetbundle打包,那么在加载场景前,场景所在的Bundle要先加载。当场景所在的bundle文件被加载后,AssetBundle有个GetAllScenePaths()接口,然后SceneManager.LoadScene加载,参数用这个接口获得的场景路径。详见下面代码。这种方式不用再在BuildSetting中把这些场景拖进去,只需保留一个入口场景即可。

        Navmesh烘焙出来后,带在场景信息中,就不用单独加载,也不用单独打Bundle了,类似的还有Lightmap。相当于这部分可以忽略了,只关注场景所在的bundle加载。

       需要注意的是,场景的bundle需要单独管理卸载。因为比较特殊,没有LoadAsset这种操作,没有记录资源引用计数。在我的设计中,这种情况确实没有资源的引用计数,但有bundle的引用计数。释放是根据bundle的引用计数释放的。

public class LoadScene : MonoBehaviour
{
    private AssetBundle myLoadedAssetBundle;
    private string[] scenePaths;

    // Use this for initialization
    void Start()
    {
        myLoadedAssetBundle =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值