【U3D小游戏】愤怒的小鸟(九)地图选则界面和部分逻辑

举报
布小禅 发表于 2022/10/22 22:14:15 2022/10/22
【摘要】 自己做一下小时候玩的风靡一时的愤怒的小鸟这个游戏,相信有很多人都在某一段时间沉迷过这个游戏吧~~

前言

自己做一下小时候玩的风靡一时的愤怒的小鸟这个游戏,相信有很多人都在某一段时间沉迷过这个游戏吧~~

1. 制作地图选择界面UI

把滴入关卡选择的UI简单制作一下。

1. 背景

首先我们先切换到地图选则的场景,我这里命名的是Level

我们制作一个背景,可以选择和游戏界面的背景一样,我就是,当然你也可以选择其他组合。

  1. 创建一个UI.Image作为我们的背景
  2. 将我们需要的背景拖拽或者选择到图片上
  3. 设置好大小

就像这样:

在这里插入图片描述

这样我们的背景就完成了

2. 地图关卡图片设置

在画布Canvas下创建一个空对象,用于管理各个关卡。

然后随便命名吧,我命名为select

地图图集在Iamge文件夹下面,名字叫LEVELSELECTION_SHEET_4。星星在同一个文件夹,名字叫LEVELSELECTION_SHEET_1

先点击图集,然后类型设置成Multiple,然后点击Apply确认设置,然后点击Sprite Editor切割图集。

然后选择好哪个关卡就行了,做好一个,copy换贴图就可以了。

在这里插入图片描述

星星是这样的:

在这里插入图片描述

2. 界面部分逻辑

找到之前创建的空物体,然后挂在一个脚本组件,名字随意,你自己知道什么意思就行。

/**
 * ==========================================
 * FileName:#FileName#
 * Author:#Name#
 * CreatTime:#CreateTime#
 * NowPath:#path#
 * ==========================================
 */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SelectLevel : MonoBehaviour
{
    public int leverSn = 1;//关卡序号

    public Text levelStar;//关卡星星总个数

    private bool isLock = false;//关卡是否解锁

    private Text starNum;//关卡已获得星星个数

    public int noLockStar = 0;//解锁关卡所需要的个数

    private GameObject lockUI;
    private GameObject starUI;

    private void Start()
    {
        LevelSelect();
    }
    void LevelSelect()
    {
        if (leverSn == 1)
        {
            //如果是关卡1
            starNum = transform.Find("level1/star/starNum").GetComponent<Text>();
            lockUI = transform.Find("level1/lock").gameObject;
            starUI = transform.Find("level1/star").gameObject;
            isLock = true;
            IsLock();
        }
        if (leverSn == 2)
        {
            //如果是关卡2
            noLockStar = 10;
            starNum = transform.Find("level2/star/starNum").GetComponent<Text>();
            lockUI = transform.Find("level1/lock").gameObject;
            starUI = transform.Find("level1/star").gameObject;
            if (int.Parse(levelStar.text) > noLockStar)
            {
                isLock = true;
                IsLock();
            }
        }
        if (leverSn == 3)
        {
            //如果是关卡3
            noLockStar = 20;
            starNum = transform.Find("level3/star/starNum").GetComponent<Text>();
            lockUI = transform.Find("level1/lock").gameObject;
            starUI = transform.Find("level1/star").gameObject;
            if (int.Parse(levelStar.text) > noLockStar)
            {
                isLock = true;
                IsLock();
            }
        }
    }
    void IsLock()
    {
        //判断关卡是否解锁
        if (isLock)
        {
            lockUI.SetActive(false);//锁消失
            starUI.SetActive(true);//显示星星
        }
    }
}

先简单写一点吧,别的以后再写

结语

积少成多,聚沙成塔,每天走一点,在场的路也能走完。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。