unity3d - 动态加载的多个 Tilemap 地图
问题描述
如果它被认为过于主观,请随意关闭这个问题。我意识到它很可能是这样,因为它可能非常关注最佳实践,如果不是行业标准,它可能是主观的。
问题和想法:
我在统一(2D)中使用 tilemap 系统,它工作得很好,但我对我的特定用法有一些担忧。我想要的是多个“战斗地图”,它们会在切换到战斗场景时被实例化。我目前的想法是将每种类型的战斗地图制作为预制件(网格上的预制件,因为瓷砖地图只是图层),然后在场景加载时实例化网格。
这是最佳做法还是有更好的方法?有 10 张地图和 200 张地图有区别吗?
我考虑过的其他事情:
制作一张巨大的瓷砖地图,所有的战斗地图彼此相距一定距离,然后将相机限制为仅在“当前”战斗地图内移动,这会是一个更好的主意吗?我可以看到的地图的绝对最大尺寸是,比如说 30x20 顶部,但可能接近一半。
一个较早的想法是使用小像素地图图像来渲染地图。这是在我发现 Unity 的 tilemap 系统之前,诚然,我宁愿使用它,因为它更易于可视化,开发工作更少.
场景:
为简单起见,我们假设游戏有 2 个场景,主菜单和战斗场景。基本上,这个想法是进入战斗场景并从可用的内容中生成随机战斗地图。角色被放置,并且任何附加物也被放置,例如物品或你拥有的东西。
我在上面提出的最佳实践是什么?我是否应该考虑我也描述过的其他两个系统?或者有什么我没有想到的会更好?
我不相信上述任何一种方法都行不通,我只是好奇它们中的任何一种是否是最好的方法。
解决方案
您考虑将所有战斗地图绘制在单个瓷砖地图上并将相机限制在当前地图的区域内,这是一个即时的危险信号。根据我在统一方面的经验,如果我想在网格上绘制一个大关卡,出于编辑器和游戏中的性能原因,我将不得不将其分成多个块(每个块都是一个单独的 tilemap),所以我不会建议这样做。
如果您的目标是快速加载时间,那么只要相应的 tilemap 相当小(小于 10000 个图块),按照您的建议实例化预制件并不是一个糟糕的主意,否则您几乎肯定会注意到地图正在加载。如果您正在尝试无缝加载大型瓷砖地图,在实际切换发生之前异步加载瓷砖地图可能会有所帮助。
我会只保留场景中加载的当前地图和下一张地图,以确保无缝过渡和优化资源使用。Unity 的瓦片地图并不轻。
推荐阅读
- ios - 在文本结束之前和之后放置操作按钮
- ios - Swift 4 GIDSignIn“未声明的类型”错误
- javascript - React 状态是批处理生命周期和非事件函数
- matlab - 如何获取txt文件中具有特定字符串的行号 - matlab
- sql - 在 SQL Server Management Studio 中的 group by 语句中仅显示 case 语句的最大值
- php - 类 api 在 laravel 上不存在反射异常
- computer-vision - 关于pyorch中的autograd,添加新的用户自定义层,我应该如何更新它的参数?
- plsql - 我有每两周(十四)个日期,我希望 op 为 14 个日期和金额,具体取决于交易日期和到期日
- rest - OPTIONS http 方法:如何正确实现它
- java - 服务类的@autowired 注释在@configure 类spring boot 中不起作用