Unity记录4.1-存储-根据关键字加载Tile

作者尝试在Unity中使用AddressableAssetsSystem实现根据关键字加载Tilemap地图,起初使用Asset而非Prefab遇到问题。后来转向直接加载Asset,虽然解决了Prefab的问题,但仍需将GameObject转换为TileBase。

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

文章首发见博客:https://mwhls.top/4810.html
无图/格式错误/后续更新请见首发页。
更多更新请到mwhls.top查看
欢迎留言提问或批评建议,私信不回。

汇总:Unity 记录

摘要:实现完 Tilemap 地图生成后,实现根据关键字加载Tile。

  • 保存地图首先要能根据关键字来加载地图,而不是在inspector里面拖拖拖,所以首先是根据路径加载本地文件。
Addressable Assets System(没成功)-2023/08/13-2023/08/14
        async void place_tiles(Tilemap tilemap, ArrayList pos_array){
            AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>("Assets/ResourcesAddressable/Prefab/Block/SoilBlock.prefab");
            await handle.Task;
            GameObject tilePrefab = handle.Result;
            GameObject instantiatedTile = Instantiate(tilePrefab);
    
            TileBase tile = instantiatedTile.GetComponent<TileBase>();
            foreach (Vector3Int pos in pos_array){
                tilemap.SetTile(pos, tile);
            }
        }
Resources加载-2023/08/14
  • 这个实际上是我五个月前的方案,
    • 但是因为现在有GPT可以问了,它给我推荐了Addressable,看起来也确实不错,所以先写的上面的方案。
  • 如下面代码所示,我加载的是asset,而不是prefab,只用两行就实现了。
    • 实际路径是"Assets\Resources\Tilemap\Block\Soil/1_GrassSoilBlock.asset",省略Resources及其前缀,省略文件扩展名。
    • 使用addressable加载,不论是asset还是prefab,它都返回的是GameObject类型,我找不到转为TileBase的方案。
    string tile_path = "Tilemap/Block/Soil/1_GrassSoilBlock";
    TileBase tile = Resources.Load<TileBase>(tile_path);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值