我正在开发一款游戏,我需要让两个角色互相交谈。我知道 XNA 不允许我播放全屏以外的电影,所以我需要以不同的方式在我的游戏应用程序中实际“播放”动画。角色周围有动画环境,因此动画不是简单的头部运动,因此,通过 3D 模型中的关键帧动画角色不是一种选择。两个角色之间的对话是关卡之间的过场动画,因此它不是游戏玩法本身的一部分。
我不确定最好的方法是什么,所以如果您有任何想法,请告诉我。
这是我到目前为止的想法:
1. 为角色创建所有单独的框架作为图像。将这些图像加载到 spritesheet 中,并以我想要的帧速率浏览每一帧。
这种方法的问题在于,2048x2048 的最大 spritesheet 纹理不允许太多帧,因为字符大约为 300x200。另一个问题是我有两个字符,因此,最小的场景需要我在内存中创建两个 2048x2048 的 spritesheets ......而且我想保持低内存要求。
2. 加载一批帧(图像),播放它们,然后释放它们并加载下一组。我知道通常加载大量小纹理并在绘图调用中在它们之间切换(性能方面)并不是一个好主意,但在这种情况下我似乎别无选择。
我担心在 Update-Draw 循环中从内存中卸载东西并在 while 中加载其他东西会减慢整个场景......所以不确定这是否是一种理智的方法。
另一个想法是用整个东西制作一个 mp4/wmv [char 动画、对话的字幕等],但是承载这些角色的界面不会像直接渲染时那样“流畅”,等等......
谢谢大家的建议,
马吕斯
编辑 1:
我已经测试了场景 2,似乎性能还可以。