文章目錄
- 一、前言
- 二、登錄界面
- 1、匯入UI素材
- 2、創建Login場景
- 3、制作登錄界面
- 4、LoginPanel腳本
- 5、掛LoginPanel腳本
- 6、添加場景到Build Settings
- 三、游戲界面
- 1、匯入UI素材
- 2、制作游戲界面
- 3、GamePanel腳本
- 3、掛GamePanel腳本
- 四、運行測驗
一、前言
嗨,大家好,我是新發,下班坐地鐵的時候,好幾次看到其他人在玩消消樂,既然大家都這么喜歡玩,那我就寫個Unity制作水果消消樂的教程吧,
我會根據內容點分成好幾篇文章來講,希望對想學Unity的同學有所幫助,創作不易,喜歡的同學歡迎關注、點贊、收藏,文章目錄如下:
第一篇:生成冰塊陣列
第二篇:隨機生成水果
第三篇:水果拖動與交換邏輯
第四篇:使用DOTween插件實作水果的滑動效果
第五篇:水果的消除檢測,實作消除效果
第六篇:水果下落與新水果生成
第七篇:水果消除特效
第八篇:游戲得分加分效果
第九篇:使用UGUI顯示游戲UI
最終的Demo工程已上傳到GitHub,感興趣的同學可以自行下載下來學習,
GitHub地址:https://github.com/linxinfa/UnityXiaoXiaoLeDemo
注:我使用的Unity版本為2020.1.14f1c1,

本篇講使用UGUI顯示游戲UI,本篇的效果:

二、登錄界面
1、匯入UI素材
將UI素材匯入Unity工程中,


如下:

2、創建Login場景
創建一個Login場景,

3、制作登錄界面
使用創建一個Panel,使用一個Image顯示背景圖,使用一個Button作為登錄按鈕,

4、LoginPanel腳本
創建LoginPanel腳本,
代碼如下:
// LoginPanel.cs
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class LoginPanel : MonoBehaviour
{
public Button loginBtn;
private void Awake()
{
loginBtn.onClick.AddListener(() =>
{
// 登錄按鈕被點擊,進入Game場景
SceneManager.LoadScene(1);
});
}
}
5、掛LoginPanel腳本
將LoginPanel腳本掛到Panel上,并賦值按鈕物件給LoginBtn,

6、添加場景到Build Settings
點擊選單File - Build Settings,打開Build Setting視窗,

將Login和Game場景添加到Scenes In Build串列中,

三、游戲界面
1、匯入UI素材
將UI素材匯入Unity工程中,


2、制作游戲界面
使用一個TextMeshPro - Text (UI)組件顯示總分,一個Button作為放回主界面的按鈕,

如下:

3、GamePanel腳本
創建GamePanel腳本,

代碼如下:
// GamePanel.cs
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using UnityEngine.SceneManagement;
public class GamePanel : MonoBehaviour
{
/// <summary>
/// 總得分Text
/// </summary>
public TextMeshProUGUI totalScoreText;
/// <summary>
/// home按鈕
/// </summary>
public Button homeBtn;
/// <summary>
/// 總得分
/// </summary>
private int m_totalScore;
private void Awake()
{
homeBtn.onClick.AddListener(() =>
{
// Home按鈕被點擊,進入Login場景
SceneManager.LoadScene(0);
});
// 注冊加分事件
EventDispatcher.instance.Regist(EventDef.EVENT_ADD_SCORE, OnAddScore);
}
private void OnDestroy()
{
// 注銷加分事件
EventDispatcher.instance.UnRegist(EventDef.EVENT_ADD_SCORE, OnAddScore);
}
/// <summary>
/// 加分事件
/// </summary>
private void OnAddScore(params object[] args)
{
// 更新總分顯示
m_totalScore += (int)args[0];
totalScoreText.text = m_totalScore.ToString();
}
}
其中,事件EVENT_ADD_SCORE定義如下:
// EventDef.cs
public class EventDef
{
//...
/// <summary>
/// 加分
/// </summary>
public const string EVENT_ADD_SCORE = "EVENT_ADD_SCORE";
}
拋出事件的地方在FruitItem中,
// FruitItem.cs
/// <summary>
/// 銷毀水果圖片
/// </summary>
public void DestroyFruitBg()
{
Destroy(fruitSpriteObj);
fruitSpriteObj = null;
// 水果消失事件
EventDispatcher.instance.DispatchEvent(EventDef.EVENT_FRUIT_DISAPPEAR, m_selfTransform.position);
// 加分事件,每個水果10分
EventDispatcher.instance.DispatchEvent(EventDef.EVENT_ADD_SCORE, 10);
}
3、掛GamePanel腳本
將GamePane腳本掛到Panel上,并賦值TotalScoreText和HomeBtn,

四、運行測驗
運行Unity,測驗效果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/264744.html
標籤:其他
上一篇:9. 凱撒加密字符
下一篇:Js練習1:收集垃圾。
