此文章原文来源于《设计模式与完美游戏开发》(蔡升达著),笔者只是在学习过程中受益颇多,从而进行了总结,有兴趣的读者可以去阅读原书。
1.场景的转换
当游戏比较复杂的时候,通常会设计多个场景,让玩家在几个场景之间切换,某一个场景可能是角色在一个大地图上行走,另一个场景则可能是在洞穴探险,这样的设计方式类似于舞台剧,一幕幕的呈现,但对于观众来说,同一时间只能看到演员在某一个场景中的演出。
当我们打开一款游戏的时候,可能会遇到以下场景:出现游戏Logo、播放游戏片头、加载游戏数据、出现游戏主画面、等待玩家登录游戏、进入游戏主画面、进入副本打怪······。
我们可以利用“状态图”将各场景的关系连接起来,并且说明他们之间的转换条件以及状态转换的流程,如图所示:
切分场景的好处:将游戏中不同的功能分类在不同的场景中来执行,除了可以将游戏功能执行时需要的环境明确分类之外,"重复使用"也是使用场景转换的好处之一。
范例场景的规划:
2.游戏场景可能的切换方式
public class SceneManager {
private string m_state = "开始";
// 改换场景
public void ChangeScene(string StateName) {
m_state = StateName;
switch (m_state) {
case "菜单":
Application.LoadLevel("MainMenuScene");
break;
case "主场景":
Application.LoadLevel("GameScene");
break;
}
}
// 更新
public void Update() {
switch (m_state) {
case "开始":
// ...
break;
case "菜单":
// ...
break;
case "主场景":
// ...