处理多个场景

对于我的游戏,现在我采用了创建多个场景的策略。 为此,我必须提出两个问题,请为我和其他成员提供改进意见。

我创建了一个单独的TextureManager类,其中我加载了至less50 MB的游戏graphics。

– >我的第一个问题是,这么多的纹理加载会在游戏性能上产生任何问题。所以游戏中的所有场景都引用了这个TextureManager类,并且使用点运算符来访问相应的纹理区域。 如果其他更好的策略这个纹理加载,然后请建议我。

– >我的第二个问题是,我的实际游戏场景使用绑定相机,我执行滚动的相机,但我的其他场景使用普通的相机。 那么在这种情况下该怎么办? 如何使用多个摄像头为单引擎? 或如何重置可用的当前相机?

我目前的工作平台是引擎。

感谢您的支持。

我的第二个问题是,我的实际游戏场景使用绑定相机,我执行滚动的相机,但我的另一个场景使用普通相机。 那么在这种情况下该怎么办? 如何使用多个摄像头为单引擎? 或如何重置可用的当前相机?

我们的3D游戏引擎允许我们创建尽可能多的渲染目标。 渲染目标基本上是我们实际投影3D场景的窗口。 通常,通常只有一个渲染目标,但在某些情况下,在编辑器和工具中,我们最多有3个渲染目标。

渲染目标允许我们在渲染目标区域内创建尽可能多的视口,并按照我们的意愿放置它们。 这样的devise可以让你创建一个小地图视口,甚至是在合作社或双人游戏机游戏中经常见到的分屏视口。 视口基本上是划分特定区域的渲染目标区域的一种手段。

然后,为了创建多个场景,我们通过为每个要管理的场景创建一个新的场景管理器来实现这一点。 每个场景管理器允许我们定义许多我们想要的相机。 我可以很容易地把10个摄像机放到一个场景中的不同有利位置。

这里的关键是与渲染目标相关联的视口可以被附加到特定的摄像机。 通过将特定的相机附加到视口,我现在已经将特定的场景关联到视口,并且渲染的视角是所连接的相机的视角。

我发现这样的devise有助于保持不同层次的解耦,并且非常灵活。

– >我的第一个问题是,这么多的纹理加载会在游戏性能上产生任何问题。所以游戏中的所有场景都引用了这个TextureManager类,并且使用点运算符来访问相应的纹理区域。 如果其他更好的策略这个纹理加载,然后请建议我。

进行一些资源加载并不less见,创建稍后可能需要的纹理,并在需要时将其保存在内存中供使用。 如果您考虑任何控制台游戏,通常会有这种“加载”游戏状态,其中很多活动发生。 控制台的性质通常需要资源和内存的管理,因为资源的后台加载并不是最佳的,例如可能在PC上。

在我们的例子中,我们在所有场景中使用一个TextureManager。 我们的规则是,如果两个场景预期实际上是不同的,那么不能期望使用相同的纹理名称。 这样的devise将场景加载器的责任强加于需要的情况下,但是如果需要,允许在多个场景之间共享纹理资源。

在纹理需要不同的情况下,加载器只需在名称为scenename.texturename的管理器中加载纹理,以便每个场景唯一地分配纹理。