场景转换
在游戏中我们经常会有场景转换的使用,比如传送阵等
那么U3D中如何实现场景转换呢?
假设我们现在有两个如下场景:
那么如何在这两个场景中切换呢?
首先,打开下面的界面
然后再打开的界面中拖入我们的场景
最后我们要在两个场景中分别创建一个脚本
注意脚本中首先引入命名空间
using UnityEngine.SceneManagement;
public void OnClickLoadScene()
{
SceneManager.LoadScene("Complete");
}
然后随便绑定一个按钮,就可以跳转到想去的场景了。
关卡选择
最终效果如下面几张图所示:
刚进入关卡界面:
点击第一关并确定后(直接就开始算分了,得几个星星自己挑):
这边我选2颗星后确定:可以看到,第一关得了2颗星,第二关解锁了
UI的搭建我就不演示了,直接贴出最终搭建好的UI层次
下面对上述UI做出解释:
canvas:就是画布
BackGround:整个大背景
windowBG:背景框(无所谓)
windowHead:上面的标题(无所谓)
接下来的很重要
levels:一个空对象,里面添加一个grid网格组件用来排列关卡按钮,levels里面我写了10个子对象,就是我们的关卡
level01:按钮
Select:一张图片,注意只在这一个关卡中创建这个,后面的不要(或者你干脆不要,不影响功能,只是为了看着舒服)
Text:用来显示关卡编号
stars:星星背景框
star1–star3–star2:三个星星图片
lock:小锁图片
AcceptButton:进入关卡场景按钮
好啦,接下来开始写脚本
首先,我们在levels里面添加一个脚本CheckPointCotroller(选择关卡控制器)
代码如下:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class LevelsController : MonoBehaviour {
[Header("最高可挑战的关卡")]
private int challengingLevel;
/// <summary>
/// 选择框
/// </summary>
private Transform select;
private int currentLevelNum;
void Awake()
{
//找到选择框
select = GameObject.FindWithTag("Select").transform;
}
void Start()
{
challengingLevel = Singleton.GetInstance().levelAndStars.Count + 1;
InitUI();
}
public void InitUI()
{
//初始化UI
for (int i = 0; i < transform.childCount; i++)
{
//找到第i个子对象(关卡)
Transform child = transform.GetChild(i);
Transform stars