unity2D横版游戏教程终章-主菜单和暂停菜单
最后一節我們做一下主菜單和暫停菜單
我們創建一個新的scene,命名為Menu,這個就是主菜單場景
我們雙擊Menu進去設置一下我們的UI
我們先添加一下Canvas,在Canvas下面創建連個Panel,一個是背景,一個用來裝UI控件
?我們設置一下Background的顏色
?然后我們就要設置一些按鈕啥的控件了
我們添加兩個按鈕,分別是play和quit,這個按鈕還是添加Legacy里面的Button
?簡單設置一下這兩個按鈕,修改他們的Text分別是Play和Quit,順便修改一下顏色和大小
然后調整一下位置,記得把這兩個按鈕的錨點改成正下方
?接著我們寫一下腳本,讓點擊Play的時候跳轉到我們的游戲場景,點擊Quit的時候退出游戲
我們創建一個C#腳本,掛到Menu的身上,腳本命名為Menu
?我們簡單寫一下Menu的代碼
?我們開始游戲時加載下一個編號的場景
這個需要我們去Bulid Settings設置一下,我們在file那里去到Build settings,將我們的Menu場景拖進去,調整一下順序
?下面我們需要把Menu腳本中的兩個函數分別綁定到那兩個按鈕上
我們選擇Play的按鈕,在下面有個On clik(),這個也就是點擊時進行的操作,我們用這個可以調用其他物體身上掛載的腳本的函數。我們點擊加號就可以添加一個Object了
?我們把Menu拖進去,這樣就可以調用Menu掛載的腳本中的函數了
我們給Play按鈕調用PlayGame函數,Quit按鈕調用QuitGame的函數
?
?這樣主菜單就做好了,不過點擊Quit按鈕是沒有反應的,打包后才可以用
下面我們做一下暫停菜單
我們回到游戲場景,我們之前做了收集櫻桃時的UI顯示,我們再做一下暫停菜單。我們先做一下暫停菜單的按鈕,我們在Canvas下面創建一個Button,命名為Pause,調整一下Pause的大小和位置,把Text的內容改成Pause,同時修改一下顏色
?記得把Pause的錨點改成左上角
然后我們在Canvas下面在創建一個Panel,命名為Menu,這個就是暫停菜單的內容,內容我們這里以修改音樂的大小為例
調整一下Menu的位置和顏色
?在Menu下面創建一個Text。內容是Pause Menu,把它移動到Menu的上面,修改一個大小和顏色
?然后我們創建一個Slider(滑動條),來控制音樂的大小,在Menu下面創建一個Slider,調整一下位置
再創建一個Text放到Slider左邊,內容是”音樂”
?Menu的下面再添加一個按鈕用來返回游戲
我們創建一個Button,Text的內容是返回,調整一下位置
?這樣UI部分就做好了
我們在設置一下代碼實現
我們創建一個C#腳本,命名為Pause來控制暫停菜單,我們把它掛到Canvas
然后寫一下代碼
?記得設置一開始Menu是不激活了,當點擊Pause按鈕時他才會激活
通過設置TimeScale(時間比例)可以調節時間的流速
然后我們在Pause按鈕那里設置一下On Click()執行PausePress函數
?這個做好了那么返回游戲的操作和這個一樣
我們在Pause腳本創建一個返回游戲的函數然后在點擊返回按鈕時使用
?當點擊暫停菜單中的返回按鈕時調用這個函數
?下面我們就剩音樂滑動條還沒設置,我們需要把這個滑動條和游戲中的聲音聯系在一起
我們就要用到Audio Mixer(混音器),我們在Asset界面右鍵創建一個Audio Mixer
我們雙擊Audio Mixer就會進入到它的設置界面
可以發現Mixer的范圍是-88-0,所以我們回到Slider,把它的范圍也設置成-88-0
?然后我們把背景音樂輸出到這個混音器上,讓混音器控制它的大小,我們到SoundManager把bgm的Audio Source的output設置給我們創建的這個混音器
?然后我們把混音器和滑動條連接在一起,讓我們滑動滑動條的時候改變混音器的音效的大小
所以將滑動條的value值和Mixer的值綁定在一起即可
我們回到Pause的代碼
?我們先獲得一下Audio Mixer的引用,回到unity把創建的Mixer拖過去
我們接下來讓Slider的value和mixer的volume綁定
我們需要把Audio Mixer的volume改成代碼可編輯,我們回到unity選擇創建的Audio Mixer,在右邊的屬性欄我們右鍵Volume,選擇Expose ‘Volume(of Master)’?to script(將音量輸出到腳本),這樣就可以在代碼編輯Volume了
?這時候Exposed Parameters(暴露參數)會變為1,也就多出來我們暴露的Volume,我們重命名為MainVolume
?我們回到Pause代碼中設置一下MainVolume的值,也就是Volume的值
?然后我們在滑動滑動條時調用這個函數
?這樣就做好了
貼一下Menu和Pause的代碼,最后的項目上傳到資源了,需要的可以下載參考
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement;public class Menu : MonoBehaviour {//開始游戲public void PlayGame(){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);}//退出游戲public void QuitGame(){Application.Quit();} } using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio;public class Pause : MonoBehaviour {//獲得暫停菜單的引用public GameObject PauseMenu;//獲得Audio Mixer的引用public AudioMixer audioMixer;public void PausePress(){//把它激活PauseMenu.SetActive(true);//暫停游戲Time.timeScale = 0f;}public void ResumeGame(){//取消激活PauseMenu.SetActive(false);//恢復游戲Time.timeScale = 1f;}//將Slider的value和mixer的volume綁定public void SetVolume(float value){audioMixer.SetFloat("MainVolume", value);} }到這里,跟隨麥扣老師的步伐,2D橫版游戲就結束了。把做游戲的過程寫成文字真的是鞏固知識的好辦法,我自己是先看了幾遍了教程,然后才寫成了文章記錄下來,方便自己后面忘記那一部分的內容好去查閱,但是寫文章的過程真的是收獲滿滿,你要考慮用詞,還要注意有沒有錯的地方,這個過程查了很多資料,比如協程,單例模式等。也學會了麥扣老師強調的看官方文檔。
以一種講授者的視角來寫教程不失為一種學習和鞏固的好辦法,可以注意到平時注意不到的細節和容易犯錯的地方,最后非常感謝麥扣老師的入門教程,我學到了很多,也希望看到這個教程的同學能有所收獲,阿里嘎多!(2022-8-6)
總結
以上是生活随笔為你收集整理的unity2D横版游戏教程终章-主菜单和暂停菜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我对国创、挑战杯这类大学生竞赛的看法
- 下一篇: 海量数据集利用Minhash寻找相似的集