一、玩家状态
创建一个用于玩家管理的脚本,命名为PlayerManagerControl。
现在为玩家角色设置属性。
? ? //属性值
? ? public int LifeValue = 3;
? ? public int PlayerScore = 0;
如果我们想要玩家调用这个玩家管理,就需要把它设置为单例模式。
? ? //单例
? ? private static PlayerManagerControl instance;
? ? public static PlayerManagerControl Instance
? ? {
? ? ? ? get
? ? ? ? {
? ? ? ? ? ? return instance;
? ? ? ? }
? ? ? ? set
? ? ? ? {
? ? ? ? ? ? instance = value;
? ? ? ? }
? ? }
然后在Awake方法中实例化这个单例。
需要一个玩家复活方法,用于检测玩家是否死亡。
这个方法的逻辑是首先判断玩家生命值是否小于等于0,如果没有就生命值减一。
?public void Recover()
? ? {
? ? ? ? if(LifeValue <= 0)
? ? ? ? {
? ? ? ? ? ? //返回主界面
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? LifeValue--;
? ? ? ? ? ? GameObject go = Instantiate(born, new Vector3(-2, -8, 0), Quaternion.identity);
? ? ? ? ? ? go.GetComponent<BornControl>().isPlayer = true;
? ? ? ? ? ? IsDead = false;
? ? ? ? }
? ? }
将这个方法在update里面调用,并且在玩家每次死亡是将IsDead属性设置为false。
? ? void Update()
? ? {
? ? ? ? if (IsDead)
? ? ? ? {
? ? ? ? ? ? Recover();
? ? ? ? }
? ? }
最后的效果是玩家被敌人子弹击中会在基地附近复活
二、游戏UI制作
需要制作击败敌人的个数和玩家的生命值的显示图案和文本
创建两个组件
然后在脚本中声明两个Text变量
? ? public Text PlayerScoreText;
? ? public Text LifeValueText;
然后让其等于:
? ? ? ? PlayerScoreText.text = PlayerScore.ToString();
? ? ? ? LifeValueText.text = LifeValue.ToString();
然后在unity中将对于的组件关联起来,
这样玩家的得分和生命值就显示出来了:
现在创建游戏失败的显示UI
声明对应变量
? ? public GameObject GameOverUI;
当玩家生命值为0或者基地被毁,就会将IsDefeat设置为true。
? ? ? ? if (IsDefeat)
? ? ? ? {
? ? ? ? ? ? GameOverUI.SetActive(true);
? ? ? ? ? ? return;
? ? ? ? }
效果如下:测试基地被毁时触发游戏结束。
三、创建进入游戏的场景
在新场景中新建一个Image,使用开始界面图片。在创建一个选项的Image。
再创建两个空物体,分别命名为Pos1和Pos2,作为选项的跳转。
最后效果如下:
选项的实现逻辑是按下W、S键,选项会上下移动,然后按下空格后进入游戏场景。
新建脚本编写逻辑
? ? private int choice = 1;
? ? public Transform posOne;?
? ? public Transform posTwo;
声明需要使用的变量用来控制对应选项。
? ? void Update()
? ? {
? ? ? ? if (Input.GetKeyDown(KeyCode.W))
? ? ? ? {
? ? ? ? ? ? transform.position = posOne.position;
? ? ? ? ? ? choice = 1;
? ? ? ? }else if (Input.GetKeyDown(KeyCode.S))
? ? ? ? {
? ? ? ? ? ? transform.position = posTwo.position;
? ? ? ? ? ? choice = 2;
? ? ? ? }
? ? ? ? if(choice == 1 && Input.GetKeyDown(KeyCode.Space))
? ? ? ? {
? ? ? ? ? ? SceneManager.LoadScene(1);
? ? ? ? }
? ? }
当按下不同的按键会进行选项跳转,在选项一并按下空格就会进行游戏场景。
然后我们把这两个新建的场景拖进我们的这个build setting里,因为只有在build setting里加载场景的序列里,它才可以进行场景的加载。
效果如下: