Unity地形切割后打包成AssetsBundle再进行加载的笔记

这篇笔记探讨了Unity中TerrainData切割成AssetsBundle后遇到的问题与解决方案,包括资源重复打包、依赖资源加载和内存管理。通过设置bundleName解决依赖资源打包,但导致内存浪费。计划通过修改manifest路径信息优化,并记录了地形加载时的LogError问题。后续解决了Shader丢失和AB包内存管理问题。

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

1.TerrainData文件切割成小块以后,分别打包成单独的AssetsBundle文件,如果不对依赖的资源进行bundleName进行设置,就会出现这部分依赖资源重复打包的问题。单独设置bundleName以后,所有依赖的资源都打包成了单独的文件。解决了资源重复打包的问题。

2.资源依赖的信息是记录在.manifest文件里的,但是记录的是绝对路径。因为项目制作过程中是分为1:资源整合项目,2正式工程项目,两个项目来使用的。所以,自动生成的依赖信息不能直接使用。(暂时还没有测试在同一个工程下的自动加载依赖资源的功能。)所以,加载后的地形丢失了所有的贴图和模型资源。为了解决这个问题,先使用了一个最简单粗暴的方式。

    将所有的依赖资源设置为相同的bundleName,这样所有的依赖资源就直接打包到了同一个文件中。然后,在地图初始化的时候,首先将依赖资源的ab包读取到内存中。代码如下

private void LoadWorldMapDepend()
        {
            string url = Application.dataPath + "/Resources/WorldMap/ABS/Windows/worldmapdepend";

            AssetBundle assetBundle = AssetBundle.LoadFromFile(url);
            string[] assetsName = assetBundle.GetAllAssetNames();
            for (int i = 0; i < assetsName.Length; i++)
            {
                assetBundle.LoadAsset(assetsName[i]);
            }
        }

这种方式解决了依赖资源无法加载的问题,但是存在的问题也很明显。首先地图切割本身就是因为地图规模的庞大,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值