关于制作游戏菜单:知识点

2015年03月19日 10:36 1 点赞 0 评论 更新于 2017-05-09 16:57

今天为大家介绍一些制作游戏菜单的知识点。

1. 播放音乐

在游戏中实现音乐播放功能,可按以下步骤操作:

  1. 添加音乐文件:将音乐文件移到场景中,并命名为 Music
  2. 声明音频源:在脚本中声明 AudioSource 类型的变量 music,示例代码如下:
    AudioSource music;
    
  3. 播放音乐:若音乐未播放,则开始播放。代码实现如下:
    if (!music.isPlaying) {
    music.Play();
    }
    
  4. 停止音乐:若要停止音乐播放,可使用以下代码:
    music.Stop();
    

2. 游戏状态

游戏状态是指给游戏发送一个状态信息,以此告知游戏下一步应执行的操作。引入游戏状态的概念能够简化代码,提升代码的可读性。

例如,游戏存在以下几种状态:渲染主界面、渲染开始界面、渲染设置、渲染帮助、离开界面。我们可以在游戏状态中进行如下声明:

public const int STATE_MAINMENU = 0;
public const int STATE_STARTGAME = 1;
public const int STATE_OPTION = 2;
public const int STATE_HELP = 3;
public const int STATE_QUIT = 4;

接着,设置一个当前的游戏状态变量:

public int gameState;

游戏启动时,需要渲染主菜单界面,可在 Start 方法中进行设置:

void Start() {
gameState = STATE_MAINMENU;
}

在后续的更新过程中,监听当前游戏状态并执行相应操作,可通过 Update 方法实现:

void Update() {
switch (gameState) {
case STATE_MAINMENU:
RenderMainMenu();
break;
case STATE_STARTGAME:
RenderStartGame();
break;
// 其他状态处理...
}
}

当执行某个动作使游戏进入另一个状态时,例如点击按钮:

if (GUI.Button(new Rect(0, 50, 483, 78), "", "start")) {
gameState = STATE_STARTGAME;
}

通过这种方式,整个游戏逻辑变得清晰简洁,它利用了消息响应的模式来驱动游戏运行。

3. GUISkin

GUISkin 是本次学习的重要收获之一。制作一个 GUISkin 后,游戏就可以使用一套统一的皮肤,并且能直接从脚本中调用。

例如,要为七个按钮(startoptionhelpquitbackmusic_onmusic_off)制作背景,可按以下步骤创建 GUISkin

  1. Project 中选择 Create -> GUI Skin
  2. Button 选项中,将 Size 设置为 7。对于 Size 0,将其名字设为 start,并在 Normal 选项中拖入 start 按钮的图像,完成该按钮皮肤的制作。
  3. 按照同样的方法制作其余 6 个按钮的皮肤。

接着,在脚本中调用该皮肤:

public GUISkin mySkin;

void RenderMainMenu() {
GUI.skin = mySkin;
// 渲染游戏主菜单界面的背景
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), TextureBg);
// 渲染 start 按钮的背景
if (GUI.Button(new Rect(0, 0, 403, 78), "", "start")) {
// 按钮点击后的操作
}
}

4. 退出游戏程序

若要实现点击 quit 按钮停止游戏的功能,可使用以下代码:

if (GUI.Button(new Rect(0, 0, 500, 78), "", "quit")) {
Application.Quit();
}

需要注意的是,原代码中 Appliction.quit() 存在拼写错误,正确的应该是 Application.Quit()

作者信息

feifeila

feifeila

共发布了 570 篇文章