首页 > 解决方案 > 房屋平面图场景变化的最佳实践

问题描述

我在场景 A 中有一个房屋平面图。玩家可以单击平面图上的一个房间并进入该特定房间。他们会发现该特定房间的图像以及有关该房间当前居住者(而不是玩家)的一些角色统计信息。

目前,我使用游戏对象实例“目标房间 1”“当前居住者亨​​利”中的一组公共变量来处理这个问题,并使用这些变量构建单个场景。

我想知道你将如何处理这件事。有没有更好的办法?每个房间有一个场景会更好吗?你如何让玩家看到他们看到房间和特定居住者的情况?

标签: c#unity3d

解决方案


好吧,这在很大程度上取决于您拥有的游戏以及您(和/或您的团队)如何更容易管理它。

您可以使每个房间成为不同的场景,只需引用它并单击即可加载。如果每个房间都很复杂,那将是最好的。明智的编程——如果它有整套信息和状态需要处理,那么在单个场景中为每个房间管理这些系统将更加困难。设计方面——如果它是一个有很多物体的复杂房间,让它成为一个不同的场景会更容易、更干净。缺点是,频繁的场景加载。这也意味着,如果您需要某种状态在不同的房间中持续存在,您必须弄清楚如何在场景中做到这一点。

您可以将每个房间设为游戏对象,然后启用它并将其移动到摄像机的视野中。这对于每个房间的功能和设计没有太多复杂性的简单场景最有效。您还可以获得这样的好处,您可以轻松地拥有像房间管理器这样可以使房间之间的交互更容易的东西。

当您从计划中选择房间时,您可以在场景中制作单个房间对象并在运行时用数据填充它。如果所有房间都是同质的并且只有一些需要更改的变量——可能是图像、名称或某些必须实例化的预制件,那么这是一个非常好的选择。一个很好的结构可能是拥有一个 RoomData 可编写脚本的对象,其中包含所有数据和一个放置在场景中的 RoomObject 预制件。RoomObject 将接收 RoomData 并显示它。这样,您只需创建新的数据文件即可快速制作不同的房间。您还可以制作不同类型的预制件来稍微不同地处理数据 - 也许如果您想要一个具有不同布局的 BedroomObject 或类似的东西


推荐阅读