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