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

汇总: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);

版权声明:
作者:MWHLS
链接:https://mwhls.top/4810.html
来源:无镣之涯
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录