场景转换
在游戏中我们经常会有场景转换的使用,比如传送阵等
那么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 = child.Find("stars");
//更改子对象关卡编号<

本文介绍了在Unity3D中如何实现场景转换和关卡选择功能。通过创建脚本和UI布局,详细阐述了场景间的切换逻辑以及关卡界面的设计,包括星星评分和关卡解锁机制。示例代码和最终效果为读者提供了清晰的实现步骤。
最低0.47元/天 解锁文章
16万+





