unity制作小游戏--俄罗斯方块[2]

大家好,我是一只余,在上一篇中我们已经创建了主界面,接下来创建游戏界面,然后就开始写代码吧。

1.游戏界面

首先把第一个主界面隐藏,选择Home对象,然后在右边属性最左上角有个选择框,把打勾去掉就是隐藏了。

然后我们先创建一个大的背景,这个背景就不在Canvas里面建了,先在Create面板中空白地方右键一个空对象取名为“GamePlayController”,然后在Images下找到背景图直接点住拖拽到GamePlayController下,然后在Scene面板中调整大小,使它覆盖了整个屏幕就可以了,一般背景图可以比屏幕大一点,防止有些手机屏幕不匹配会显示不全。

然后分别把_0002_brick-classic,_0000_next,_0002_play图片拖拽到GamePlayController下,这时候要先改图片所在的层才能看得见,选中在属性中修改Order in Layer 为 1就可以看得见了,然后觉得太大,就属性中修改缩放比例,调到合适大小就行了。其他两个图片也是,先要修改Order in Layer再修改缩放比例,位置大概向下图一样就可以了。

这里的层改变了,之前的UI层也要改,选中Canvas,在属性中修改OrderinLayer 为2,不然UI层会被背景图覆盖的。

然后在Gameplay下新建一个空对象取名“Buttons”,在Buttons下创建5个按钮Button,去掉按钮下的Text,分别取名为btnPause,btnMoveLeft,btnMoveRight,btnDown,btnRotation,然后在属性中选择它们的图片,位置大概像下图差不多就行了,没有特别要求的。

再建分数和高度以及关卡提示,再Gameplay下新建空对象取名Info,在Info新建Image取名Score,图片选择是_0001_board,点击Set Native Size设置原大小,然后在Score下新建两个Text,一个放在图片的上部,Text写“SCORE”,Size改为40,左右上下都居中,颜色改为白色,另一个放在图片中,Text随便写个数字“100”。同理新建一个High和一个Level。

到这里我们已经创建了游戏界面,还有一个暂停和结束界面后面我们再建,现在先切回到Home界面,隐藏GamePlay界面,然后在Assets面板下新建一个文件夹取名Scripts,用于存放脚本。新建一个脚本取名HomeManger,然后直接点住拖拽到Home属性下,打开脚本输入下面代码。

HomeManger.cs

using UnityEngine;
using UnityEngine.UI;

public enum STATE_SCENE
{
    Home,
    GamePlay
}

public class HomeManager : MonoBehaviour
    {
        [SerializeField]
        private Button btnClassic;

        [SerializeField]
        private Button btnPushUp;

        [SerializeField]
        private Button btnSound;

        [SerializeField]
        private Button btnRateGame;

        [SerializeField]
        private Button btnMoreGame;

        [SerializeField]
        private Sprite[] spriteSound;

        [SerializeField]
        private Image imgSound;

        internal bool isSound;

        internal bool isMusic;

        private void Awake()
        {
            if (!PlayerPrefs.HasKey("Sound"))
            {
                PlayerPrefs.SetInt("Sound", 1);
            }
            if (!PlayerPrefs.HasKey("Music"))
            {
                PlayerPrefs.SetInt("Music", 1);
            }
            isSound = (PlayerPrefs.GetInt("Sound") == 1);
            isMusic = (PlayerPrefs.GetInt("Music") == 1);
            imgSound.sprite = spriteSound[isSound.GetHashCode()];
            AudioListener.volume = PlayerPrefs.GetInt("Sound");
            btnSound.onClick.AddListener(ChangeSound);
            btnClassic.onClick.AddListener(ClickClassic);
            btnPushUp.onClick.AddListener(ClickPushUp);
        }

        private void ChangeSound()
        {
            btnSound.transform.localScale = Vector3.one;
            isSound = !isSound;
            PlayerPrefs.SetInt("Sound", isSound.GetHashCode());
            imgSound.sprite = spriteSound[PlayerPrefs.GetInt("Sound")];
            AudioListener.volume = PlayerPrefs.GetInt("Sound");
        }

        private void ClickClassic()
        {
            Debug.Log("ClickClassic:经典模式");
            PlayerPrefs.SetInt("mode", 0);
            GameManager.Instance.ChangeState(STATE_SCENE.GamePlay);
        }

        private void ClickPushUp()
        {
            Debug.Log("ClickClassic:模式");
            PlayerPrefs.SetInt("mode", 1);
            GameManager.Instance.ChangeState(STATE_SCENE.GamePlay);
        }

    }

 

本次先到这里,记得关注我的公众号。。。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值