1.创建End
创建一个3d的object,cube。rename成End。当player碰到他就算结束或者进行下一关。
将End的xyz修改成合适的数值,与Ground长度一致,即我们正常动player就会碰上它。
关掉End的Mesh Renderer,就会隐藏掉。以防止看不见,我们加一个红色标签,靠近时会显示出来,我们就知道End在哪放着。
2.打开End的is Trigger
3.创建一个新的脚本End
4.将脚本挂载在End上
5.在脚本里引入相应的一些东西
end脚本
if调用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class End : MonoBehaviour
{
public GameManager gameManager;
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag=="Player")
{
gameManager.CompleteLevel();
}
}
}
Gamemanager脚本
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;//使用场景管理器的时候
public class GameManager : MonoBehaviour
{
bool gameHasEnded=false;
public float ResetTime=1f;
public GameObject completelevelUI;
public void CompleteLevel()
{
/*Debug.Log("win");//player碰上end时会出现这个结果*/
completelevelUI.SetActive(true);//SetActive激活管理出现字
}
private void SetActive(bool v)
{
throw new NotImplementedException();
}
public void EndGame()//角色死亡时候触发游戏结束的这个函数
{
if (gameHasEnded ==false)
{
gameHasEnded= true;
Debug.Log("Game over");
Reset();
Invoke("Reset",ResetTime);
}
}
private void Reset()//重启游戏
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);//使用LoadScene来加载场景,激活的场景。
//SceneManager.LoadScene("TestCube");
}
}
将GameManager挂进来!!!
在canvas处创建一个panel
改名成LevelCompete
image处将Source image设置成none就是将来源设置成空的,我将color设置成了粉色
在它下边设置两个text
分别改名成lEVEL和Compete,文案也写相应的。
将LEVEL的字体设置成100,Complete字体设置成70.都要居中放置!!!
如果看不见就放大一点哦!
先将他们隐藏起来:
我圈出来的地方不勾选,我们就在界面中看不到他们了。先不勾选哦。
在GameManager.cs中引入
public GameObject completelevelUI;
public void CompleteLevel()
{
completelevelUI.SetActive(true);//SetActive激活管理出现字
}
激活一下,布尔值,但是报错,所以我们开头加个包
using System;
这样就不报错了。
赋值
左边拖到右边就ok。
此时,当player碰到End时候触发激活,蹦出来我们最开始写的Levelcompete。