平面检测部分
4-场景切换
在前面几次的博客中我们新建了一个场景,于是场景切换变成了一个难题。
背景知识
按住ctrl+shift+B可以看到,在我们准备打包的场景后面是有编号的
而这个编号成为了场景切换的关键所在。
开始动手
首先我们在两个关键的游戏场景中各创建一个按钮,用于场景切换命名为change_mode
并且添加按钮事件至click_control脚本中
public void ToCardMode()
{
SceneManager.LoadScene(1);
}
public void ToNoCardMode()
{
SceneManager.LoadScene(2);
}
其中ToCardMode方法用于从无卡模式(平面检测模式)切换至有卡模式(图片识别模式);ToNoCardMode方法用于从有卡模式(图片识别模式)切换至无卡模式(平面检测模式)。
同时将两个方法分别放入不同的场景的按钮的点击方法中。
- 值得一提的时,两个方法中传入的参数0和1分别对应着上文中提到的不同场景界面的编号
- 值得注意的一点是,一定要在脚本开始加入下面这句话,否则将会报错。
using UnityEngine.SceneManagement;
click_control现修改为
using GoogleARCore.Examples.HelloAR;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class click_control : MonoBehaviour
{
public int click_num = 0;
public int rotate_num = 0;
public bool isPlay = false;
public bool isRotate = false;
public bool BoxRotate = false;
public bool die = false;
public float speed = 5f;
public GameObject Plane_con;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void click()
{
click_num = click_num + 1;
}
public void playAudio()
{
isPlay = true;
}
public void playIsOk()
{
isPlay = false;
}
public void back()
{
SceneManager.LoadScene(0);
}
public void ToCardMode()
{
SceneManager.LoadScene(1);
}
public void ToNoCardMode()
{
SceneManager.LoadScene(2);
}
public void item_rotate()
{
if (rotate_num % 2 == 0)
{
isRotate = true;
}
else
{
isRotate = false;
}
rotate_num++;
}
public void fastRotate()
{
BoxRotate = true;
}
public void slowRotate()
{
BoxRotate = true;
}
public void refresh()
{
die = true;
Plane_con.GetComponent<HelloARController>().hasFile = false;
}
}