unity学习笔记

2023-12-27 06:01:32

一、玩家状态

创建一个用于玩家管理的脚本,命名为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里加载场景的序列里,它才可以进行场景的加载。

效果如下:

文章来源:https://blog.csdn.net/2301_79022588/article/details/135218551
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。