Day 28 | Unity游戏开发 - 介面设置及场景转换

在上一篇文章提到对话系统的管理,今天我们要来说明主画面设定及场景资料转换。
需要注意的是,介面的素材图需要将背景及按钮分别输出喔!

目录
素材图
介面设置
场景转换

素材图

开始画面-背景 关卡介面-背景
开始画面-按钮 关卡介面-按钮

介面设置

开始画面

在Scene中使用Canvas加入主画面介面,并将开始按钮放上正确位置

关卡介面

另外开一个新场景,并将关卡介面图放入Scene中

将所有关卡按钮放置正确的位置,按钮名称依照关卡顺序取名

场景转换

场景切换

将所有需要切换的场景在File>Build Settings>Scenes In Build中加入

新增SceneManager()来管理所有场景,在SceneTrans()中使用string传关卡名称

public void SceneSwitch(string _SceneName) 
    {
        SceneManager.LoadScene(_SceneName);
    }

在Scene按钮中,加上场景切换功能

关卡切换

我们的关卡希望可以完成一关,才可以解锁下一关,因此需要设立一个变数来判断关卡是否解锁。

在LevelSelection()中加入bool,来判断关卡目前状态

private bool unlocked; //预设为fasle

在PressSelection()中:

  • 判断bool值,来决定是否切换场景
  • 因为有多个关卡需要切换,因此使用string传关卡名称
 public void PressSelection(string _LevelName) 
    {
        if (unlocked)
        {
            SceneManager.LoadScene(_LevelName);
        }
    }

在Scene中,为每个按钮都加上场景切换功能

在每个游戏关卡中加入SingleLevel()中,使用PlayerPrefs储存关卡数值

public levelIndex;
public Score;

public void PressedFinished()
    {
        PlayerPrefs.SetInt("Lv" + levelIndex, Score);
    }

在LevelSelectioon()中读取PlayerPrefs数值,更新关卡状态

private void UpdateLevelStatus()
{
    int previousLevelNum = int.Parse(gameObject.name) -1;
    if(PlayerPrefs.GetInt("Lv" + PreviousLevelNum) > 0) //上一个关卡分数是否大於0
    {
        unlocked = true;
    }
}

并在Update()中加入

UpdateLevelStatus()

如此一来便完成介面及场景切换功能喽!下一篇将会为各位介绍我们所用到的专案管理工具,明天见!


<<:  JavaScript阵列

>>:  python使用chardet来避免文件编码错误

[Day 18] 转换 OpenAPI 文件为 Postman Collection 做 Web API 自动化测试

Web API 测试可以是後端工程师使用测试框架撰写白箱测试,也可以是 QA 使用测试工具进行黑箱测...

[DAY 30] 章节3-10: 晨晓之始-继续统计旅程

3-10 晨晓之始 半夜4:30天还未亮,茉姨便拿着提灯到两人房间叫醒二人,飞哥与小博匆匆起床洗漱後...

Day26 - 使用 Share Target Picker 分享讯息

LINE Developers:https://developers.line.biz/zh-ha...

Day 29:Google Map 自订资讯视窗

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...

[Day 10] 前端页面路由设定 vue-router

开始动工啦~ 今天电脑不在手边,这篇会先在CodeSandBox实作 所以介面会长的跟上一篇的Web...