在这个星期,我设计了app的场景切换功能,即上篇文章中提到的开始界面和扫描页直接的切换以及相应的按钮响应功能。下面我简要介绍一下实现的过程
1、场景设计
我将开始界面和扫描页分别建立在两个scenes中,一个命名为“MainScene”一个是“ScaneMap Scene”,两个场景中的按钮放置、背景等采用《(个人)AR电子书系统创新实训第四周(2)》的界面设计,具体设置见上文,界面如下:
2、开始界面UI功能实现
在“MainScene”这个场景中,我需要实现两个功能,一个是载入宣传册,一个是退出系统。
载入宣传册功能:
首先在载入宣传册的“button”中添加脚本MainSceneManager.cs,代码中导入unity的场景信息处理引擎using UnityEngine.SceneManagement
再建立函数EnterScanMapScene(),通过调用加载场景的函数SceneManager.LoadScene()来实现场景的切换,具体代码如下:
public void EnterScanMapScene()
{
SceneManager.LoadScene("ScanMap");
}
- 注意:场景切换功能函数调用成功的前提是得在File->Building Setting中导入需要切换的Scene,否则函数找不到可以调用的场景“MainScene”
退出宣传册功能:
退出宣传册功能是指在点击该button时,退出系统
因此,我首先需要通过Input.GetKey()获取触摸位置,之后再调用系统SystemQuit()退出函数,具体代码如下:
void Update () {
if (Input.GetKey(KeyCode.Escape))
{
SystemQuit();
}
}
3、扫描页UI功能实现
在“ScaneMap Scene”这个场景中,我需要实现两个功能,一个是进入宣传册,一个是返回上一级。
进入宣传册功能:
- 在ScenCameraScript.cs中添加进入ARScene.unity的函数,通过调用SceneManager引擎调用场景,具体代码如下:
public void EnterARScene()
{
if (done)
{
SceneManager.LoadScene("ARScene");
}
}
注:ARScene.unity场景是由我们组上的其他成员完成。
返回上一级功能:
- 返回上一级功能是指当触摸手机返回键时,场景切换到开始界面。具体的实现方法同“退出宣传册”的相同,都是通过调用系统引擎来实现场景的切换。所以,在ScenCameraScript.cs的update()中添加如下代码:
if (Input.GetKey(KeyCode.Escape))
{
SceneManager.LoadScene("mainScene");
}
4、unity中的场景切换
在unity中切换不同的场景特别的方便,不像其他开发软件那么繁琐,只需要将相应的场景导入unity,之后在通过函数调用即可,极大提高了一个团队中制作同一款app不同功能的组合效率。
这一部分的实现方法有很多种,之前的文章中也有提到场景切换的问题,当时是利用Canvas Group组件修改Canvas画布的alpha值来实现。相较而言,本篇文章中的这种方法更值得学习。