【Unity小游戏】打字消除字母

今天上课随手做了一个打字消除字母的游戏,自己试着用单例模式来控制分数的增长。

内容其实十分简单。

1.使用一个Card脚本控制字母的生成和销毁,同时使用场景控制脚本GameMannger提供的单例来更改得分。

2.场景控制脚本GameMannger动态控制字母的生成。

3.将搭载了Card脚本的字母做成预制体,然后提供给GameMannger即可。

首先是两个脚本:
Card脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Card : MonoBehaviour {
    private float speed;

    public string alphabet;
    // Use this for initialization
    void Start () {
        speed = Random.Range(1F, 1.5F);
	}
	
	// Update is called once per frame
	void Update () {
        transform.Translate(Vector3.down * Time.deltaTime * speed);
        //之前的基础练习有说过,乘上deltaTime可以让移动更平滑
        //因为Update是按照帧速率更新的
        if(Input.GetKeyDown(alphabet))
        {
            GameMange.Insatance.updateUI();//单例模式调用
            Destroy(this.gameObject);
        }
	}
}

GameManager脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameMange : MonoBehaviour {
    private static GameMange _instance;//单例模式访问
    public static GameMange Insatance
    {
        get
        {
            return _instance;
        }
    }
    public Text Point;
    public GameObject[] card;
    private float timer = 0;
    int score;
    // Use this for initialization

    private void Awake()
    {
        _instance = this;
    }
    void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        timer += Time.deltaTime;
        if(timer>1.5f)
        {
            CreateCard(Random.Range(0,card.Length));
            timer = 0;
        }
	}

    private void CreateCard(int index)
    {
        float x = Random.Range(-8.65f, 8.65f);
        float y = Random.Range(0, 8);
        Instantiate(card[index], new Vector3(x, y, 0), Quaternion.identity);//使用Instantiate创建预制体
    }

    public void updateUI()
    {
        score += 1;
        Point.text = "得分"+score;
    }
}

场景搭建和层级关系如下:(素材随便找即可)
在这里插入图片描述
制作预制体:先将每个字母图片改为Sprite,然后挂载Card脚本
在这里插入图片描述
Alphabet记得赋值,因为是按照输入的值来消除字母的。
然后把GameManager挂载给场景中的空物体GameManager(该物体专门用于游戏节奏控制)
最后记得把Point挂给GameManager的Point,然后给Card数组赋上26个字母的值(预制体)

最后就可以玩了~十分简单的游戏,只是随便做做,顺便复习一点以前学过的东西。

运行结果如下:
在这里插入图片描述

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值