如何在运行时向 Unity Tilemap 添加可编写脚本的磁贴?

Bar*_*ide 6 unity-game-engine

我正在尝试在运行时将我的一个可编写脚本的图块添加到我的 Unity Tilemap 中。我可以在编辑器中绘制磁贴,一切看起来都很好,但我想在运行时添加它。

我尝试实例化 ScriptableObject 资产本身,但它没有生成的磁贴资产在编辑器中所需的正确精灵。此外,我不认为我应该为每个图块实例化 ScriptableObject 资产,因为一个资产旨在为地图上的所有相同图块共享。

Tilemap API 提供了一种添加磁贴的方法,但没有说明或示例说明如何创建磁贴。

小智 0

这有点超出我的想象,但我昨天正在搞类似的事情,在点击时实例化一个图块。

Vector3Int tilePos = map.WorldToCell(mousePos);

    YourTileClass tileInstance = ScriptableObject.CreateInstance<YourTileClass>();

    Texture2D tex = Resources.Load<Texture2D>("tileTexture") as Texture2D;

    Sprite sprite = new Sprite();

    sprite = Sprite.Create(tex, new Rect(0, 0, 400, 400), new Vector2(0.5f, 0.5f));

    Tile tile = Resources.Load<Tile>("tileInstance") as Tile;

    tileInstance .sprite = sprite;

    yourTileMap.SetTile(tilePos , tile);
Run Code Online (Sandbox Code Playgroud)

我不是 100% 认为这是最好的方法,但它对我有用。如果这不起作用,请告诉我,我会仔细检查实际文件。