C# 房屋平面布置图场景更改的最佳实践

C# 房屋平面布置图场景更改的最佳实践,c#,unity3d,C#,Unity3d,我在场景a中有一个房屋平面图。玩家可以点击平面图上的一个房间,进入那个特定的房间。他们所发现的将是一个特定房间的图像和一些关于该房间当前居住者(而不是玩家)的角色统计信息 目前,我在gameobject实例“target room 1”“current occupant Henry”中使用一组公共变量来处理这个问题,并使用这些变量来构建单个场景 我想知道你会怎么做。有更好的办法吗?每个房间有一个场景更好吗?你如何让玩家看到房间和特定的居住者?这在很大程度上取决于你的游戏,以及你(和/或你的团队)

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

目前,我在gameobject实例“target room 1”“current occupant Henry”中使用一组公共变量来处理这个问题,并使用这些变量来构建单个场景


我想知道你会怎么做。有更好的办法吗?每个房间有一个场景更好吗?你如何让玩家看到房间和特定的居住者?

这在很大程度上取决于你的游戏,以及你(和/或你的团队)如何更轻松地管理游戏

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

您可以将每个房间设置为游戏对象,只需将其启用并在摄影机的视野中移动即可。这将最适合于简单的场景,其中每个房间的功能和设计没有太多复杂性。另外,您还可以轻松地使用类似于Room Manager的功能,从而简化房间之间的交互

从平面中选择房间时,可以在场景中创建单个房间对象,并在运行时使用数据填充该对象。这是一个非常好的选择,如果所有的房间都是同质的,并且只有一些需要更改的变量——可能是一个图像、一个名称或某个必须实例化的预设。一个很好的结构是可能有一个RoomData脚本对象,其中包含所有数据,以及一个放置在场景中的RoomObject预置。RoomObject将接收RoomData并显示它。这样,只需创建新的数据文件,就可以快速创建不同的房间。您还可以制作不同类型的预置,以稍微不同的方式处理数据——如果您希望卧室对象具有不同的布局或诸如此类的内容,也许可以