2048化學元素版一文教你Unity零基礎制作2048!

      網友投稿 1072 2025-03-31

      前言

      玩游戲也能學習知識?還記得高中時的化學元素常見金屬活動性屬性表嗎?一起來復習一下:鉀K,鈣Ca,鈉Na,鎂Mg,鋁Al,鋅Zn,鐵Fe, 錫Ni,鉛Sn,氫(H),銅Cu,汞Hg,銀Ag,鉑Pt,金Au。 一股很熟悉的味道有沒有?一起來看看化學元素和游戲之間發生的碰撞吧~

      一,游戲介紹和效果展示

      2048 一款益智小游戲,游戲的規則十分簡單,簡單易上手的數字小游戲,閑來無事,自己制作一個,卻怎么也到沒有成功到2048。

      老規矩,先看下按照此博文一步步操作完成的效果吧~

      二,開發前的準備工作

      2048化學元素版?一文教你Unity零基礎制作2048!

      2.1 創建工程

      打開Unity Hub 點擊“新建”,在彈窗中輸入 --> “項目名稱” --> 選擇"項目位置" --> “項目版本控制系統” 選不選都行,不需要在云端備份的話就不要選(我一般不選)

      ,選了沒用過的話,會自動幫你安裝PlasticSCM到本地。最后點擊創建即可。

      2.2 導入素材

      將提前準備好的素材(圖片和聲音)導入工程。(文末會提供-)

      方式一: 在"Project"面板右鍵 --> “Improt Package” --> “Custom Package…” --> 選擇自己下載下來的UnityPackage --> 最后點擊"Import" 導入。

      方式二: 直接將下載還的UnityPackage,拖拽到項目中,然后點擊"Import" 導入:

      導入項目后工程目錄如下:

      三,游戲開發進行中

      3.1 游戲場景搭建

      設置分辨率:點擊Game視圖分辨率選框,設置為(1080x1920),沒有的話點擊加號自行添加一個,或者使用一個豎屏的就可以。

      創建背景:右鍵UI --> Image 創建后,重命名為BG,將其錨點設置為鋪滿,源文件指定為素材"play_bg_forest_dark":

      修改Canvas:將自動創建出來的Canvas的Canvas Scaler 屬性設置如下:

      創建格子: 在“Canvas”下創建Image,重命名為“MapBg”,將其寬高設置為(1720,1720),然后修改其顏色為淺藍色,透明度相應調低,效果如下:(自己覺得好看就可以了)

      然后在“MapBg”下再次創建一個Image,重命名為“gezi”,將其寬高設置為(400,388),調整其顏色為(22,0,192,30),還是一樣調整到自己喜歡的顏色即可。然后“Ctrl + D” 復制15個格子出來:

      最后在“MapBg”上添加"Grid Layout Group",屬性設置如下圖,將格子鋪滿到地圖背景上:

      創建數字池: 右鍵創建一個空物體作為加載數字的父物體,并命名為“NumPool”,所有屬性默認即可。

      創建數字預制體: 右鍵Image重命名為Num,寬高調整為和格子一樣大(400,380),然后將其拽到Resources文件夾下,作為預制體,然后右鍵刪除場景中Num即可:

      游戲結束面板:創建Image命名為“UIFinsh”,鋪滿背景。在“UIFinsh”下在創建一個Text和一個Button,作為游戲結束顯示文本和重新開始按鈕:

      3.2 核心代碼編寫

      場景終于搭建完了,下面開始編寫腳本吧,完整代碼在四中給出,這里只講解實現思路,查看核心邏輯。

      在Project下創建Scripts文件夾,然后創建"Manager.cs" 和 “Number.cs” 腳本。

      基礎邏輯就是:默認生成兩個數字,接收用戶輸入,管理器觸發移動邏輯,數字移動并校驗合并,移動后校驗是否游戲結束,若結束處理游戲結束摞,若未結束在自動生成一個數字:

      結束

      繼續

      默認生成數字

      管理器接收用戶輸入

      管理器觸發數字移動邏輯

      數字移動并校驗合并

      移動后校驗游戲結束

      處理游戲結束邏輯

      Manager中接收用戶輸入的方式一種是在移動端的滑動,一種是在PC端的按下剪頭或WASD上下左右移動:

      Manager收到用戶輸入后的控制游戲數字移動邏輯:

      Num類收到Manager的移動,合并邏輯處理:

      最后將Manager掛載到“BG”,并對公有變量’PoolManager’和’UIFinsh’賦值,如下圖即可:

      將Number腳本掛載到上面制作的預制體“Num”上即可。

      此時所有的游戲邏輯就都完成,運行游戲就可以玩耍了~

      3.3 游戲音效處理

      音效是這一個游戲的很重要的部分,一個好的音效可以讓用戶得到更好的反饋,所以再簡單的游戲也要有背景音和音效給用戶一個好的交互體驗。

      背景音樂:在“BG”上,添加組件“Audio Source”,將音頻文件“bg_1”賦值給AudioClip并勾選Loop,即可完成自動循環播放背景音樂:

      數字音效:同理在“Num”預制體上添加組件“Audio Source”,將音頻文件“num”賦值給AudioClip,其他屬性默認即可。

      四,游戲完成源碼分享

      4.1 Manager游戲管理類

      using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Manager : MonoBehaviour { public static Manager _isnstance; //單例模式的引用 public Transform poolManager; //生成數字的池子 private GameObject numPrefab; //數字的預制體 public Number[,] numbers = new Number[4, 4]; //保存方格中的數組 //正在移動中的Num public List isMovingNum = new List(); public bool hasMove = false; //是否有數字發生了移動 public GameObject UIFinsh; //游戲結束頁面 void Awake() { _isnstance = this; } void Start() { numPrefab = Resources.Load("Num"); // 開始游戲 ReStartBtn(); // 游戲結束面板按鈕監聽,重新開始 UIFinsh.GetComponentInChildren

      上一篇:統計報表撤銷(統計報表申報以后可以撤銷嗎)
      下一篇:wps演示如何設置表格樣式(wps如何弄表格樣式)
      相關文章
      国产精品久久久久久亚洲影视 | 亚洲va在线va天堂va手机| 免费亚洲视频在线观看| 亚洲人成人77777网站不卡| 亚洲精品私拍国产福利在线| 中文字幕不卡亚洲 | 亚洲国产精品无码专区| 亚洲日本va中文字幕久久| 怡红院亚洲怡红院首页| 在线观看亚洲精品专区| 亚洲日韩AV无码一区二区三区人| 亚洲国产美女精品久久| 亚洲不卡中文字幕| 亚洲人成电影网站久久| 亚洲国产成人无码av在线播放 | 亚洲av无码乱码在线观看野外| 爱情岛论坛亚洲品质自拍视频网站| 亚洲午夜成人精品无码色欲| 亚洲精品无码高潮喷水A片软| 亚洲色偷偷色噜噜狠狠99| 亚洲精品久久无码av片俺去也| 亚洲精品无码av片| 亚洲精品色在线网站| 亚洲精品无码av天堂| 曰韩亚洲av人人夜夜澡人人爽| 亚洲精品无码久久毛片| 国产精品亚洲αv天堂无码| 在线精品亚洲一区二区三区| 国产亚洲一区二区在线观看| 久久亚洲国产成人亚| 亚洲s色大片在线观看| 亚洲国产人成在线观看69网站| 亚洲美女视频免费| 亚洲午夜成激人情在线影院 | 亚洲视频免费在线观看| 久久丫精品国产亚洲av| 亚洲mv国产精品mv日本mv| 亚洲AV无码之国产精品| 亚洲黄片毛片在线观看| 亚洲精品色午夜无码专区日韩| 亚洲第一福利视频|