房屋平面图场景更改的最佳实践

时间:2019-06-18 17:09:32

标签: c# unity3d

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

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

我想知道你会怎么做。有没有更好的办法?每个房间有一个场景更好吗?您如何让玩家看到他们看到房间和特定占用者的情况?

1 个答案:

答案 0 :(得分:0)

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

您可以将每个房间设置为不同的场景,然后引用它并在单击时加载它。如果每个房间都很复杂,那将是最好的选择。明智的编程-如果它具有完整的信息集和要照顾的状态,则很难为单个场景中的每个房间管理这些系统。明智的设计-如果它是一个复杂的房间,里面有很多物体,那么使其成为不同的场景将使您的工作更加轻松和整洁。缺点是场景加载频繁。这也意味着,如果您需要某种状态来在不同的房间中保持不变,则必须弄清楚如何跨场景进行操作。

您可以将每个房间变成游戏对象,然后启用它并在摄像机的视场中移动它。对于每个房间的功能和设计没有太多复杂性的简单情况,这将是最好的选择。另外,您还获得了好处,即您可以轻松拥有Room Manager之类的东西,从而使房间之间的交互更加轻松。

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