【问题标题】:Unity procedural TileMap generation without creating gameobject per tileUnity 程序 TileMap 生成,无需为每个图块创建游戏对象
【发布时间】:2025-12-08 14:25:02
【问题描述】:

我一直在互联网上搜索,以找到一种有效的方法来创建程序化贴图,而无需为每个图块创建一个游戏对象。没有,或者只是我找不到它,因为我真的不知道如何搜索它。我发现的所有 TileMap 教程都是通过创建数百个游戏对象来创建图块。因此,Unity 中的层次结构正在不受控制地扩展。

我很确定这不是“正确”的做法。尤其是在看到支持 tilemaps 的新 Unity 2D 工具之后。 Unity 做到了,您可以在“一个”游戏对象中创建图块,而不是为每个图块创建图块。

如何以正确的方式做到这一点?

【问题讨论】:

  • 您已将此内容交叉发布到两个 SE 站点。选择一个。
  • 如果您使用纹理图集,那么拥有许多对象应该不是什么大问题。即使您有 10000 个图块,它仍然是一个绘制调用。我认为拥有单个游戏对象可能会使调试变得困难,并且您将失去编辑器的一些功能。我会说当它成为一个问题时,把效率留给它。它可能永远不会成为问题。当然,除非您只是想学习新技术,否则 Emilio 有一个很好的答案。

标签: unity3d


【解决方案1】:

鉴于“创建高效的瓷砖地图”的唯一任务,您最好的选择是创建一个TileMap 组件,该组件管理由一组独立的四边形集合组成的程序网格,UV 映射到瓷砖图集。这样,您甚至可以在一次绘制调用中绘制整个地图。

您需要了解一两件事关于网格如何工作和纹理。很简单,如果你不知道但很好奇,catlikecoding's tutos are a good starting point。在教程中,网格上的每个四边形都共享顶点,但为此您需要独立的四边形,以便正确纹理化它们。

【讨论】:

  • 感谢您的回复,我已经了解甚至设法制作了一些原型。它就像我想要的那样工作。但我一直坚持为瓷砖制作动画。我有一个解决方案,但我不确定它是否合乎逻辑和有效。所以我在这里问了一个关于它的另一个问题,如果你想看看链接在这里*.com/questions/30963298/…再次感谢您的帮助^^
最近更新 更多