一、引言
游玩測試:
Football 游玩測試
1.項目背景與動機
? ? ? ? 背景:在學習 Unity 的過程中,希望通過實際項目來鞏固所學知識,同時出于對休閑小游戲的喜愛,決定開發一款簡單有趣的小游戲加深自己的所學知識點。
????????動機:希望能讓玩家在輕松的氛圍中體驗游戲的樂趣,緩解日常學習和工作的壓力,同時希望在學習unity的道路上留下點腳印。
2.預期效果與目標
????????預期效果:實現一個畫面簡潔、操作流暢的球體控制游戲,玩家操控球在場景中移動,收集食物得分,達到一定分數獲勝。
????????目標:完成一個功能完整的小游戲,并通過測試和發布,讓更多人體驗到游戲的樂趣,同時提升自己在 Unity 開發方面的技能。
(1)游戲開始(伴有吃道具的音效,UI得分界面,貼圖,視野跟隨,物品旋轉)
(2)游戲結束(伴有結束背景音效)
二、前期準備
1.開發環境搭建
(1)操作系統選擇:Windows 系統軟件兼容性好,Unity 開發相關工具和插件容易獲取和安裝,且有大量的開發教程資源;
(2)硬件配置需求:CPU 建議選擇 Intel i5 及以上或 AMD 同級別處理器,以保證代碼編譯和游戲運行的流暢性;GPU 方面,NVIDIA GeForce GTX 1050 及以上或 AMD 同性能顯卡,有助于處理游戲中的圖形渲染。
2.軟件工具介紹以及安裝包
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
(1)Unity 版本選擇與下載安裝:選擇了 Unity 2023.版本,該版本功能較新且穩定性較好。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
(2)VS2022:使用 Visual Studio2022?作為腳本代碼編輯器。
(3)其他輔助軟件:
Inno Setup Compiler:用于將Unity打包的軟件,進行再加工,形成可供別人游玩的安裝包
Bandicam:用于錄制視頻和音效素材(可有可無);
(4)安裝TIPS:
Unity制作游戲——前期準備:Unity2023和VS2022下載和安裝配置——附安裝包-CSDN博客
????????通過網盤分享的文件:Inno Setup 6.zip等2個文件
鏈接: https://pan.baidu.com/s/11ljj4FaZJh4DI1riwyOo8w?pwd=4399 提取碼: 4399?
--來自百度網盤超級會員v5的分享
三、游戲策劃
1.游戲創意構思
(1)靈感來源:受到經典的吃豆人游戲啟發,結合足球元素,想打造一個新的休閑玩法,讓玩家操控足球在充滿食物的場景中收集得分。
(2)游戲類型定位:屬于休閑益智類游戲,規則簡單易上手,適合各個年齡段的玩家在碎片化時間內進行娛樂。
2.核心玩法設計
(1)玩法規則詳細描述:玩家操控球在限定的場景中移動,場景中分布著食物,足球與食物碰撞后可收集食物得分,當收集的食物數量達到 8 個時,游戲勝利。
(2)玩家交互方式規劃:玩家通過鍵盤的方向鍵控制足球的(wsad)前后左右移動,按下 Escape 鍵可退出游戲。游戲過程中,通過 UI 界面實時顯示當前得分,勝利時顯示勝利文本。
3.游戲美術風格確定
(1)色彩搭配構思:采用明亮活潑的色彩,以黃色作為食物和主要場景元素的底色,搭配藍色、粉色等對比色,使畫面更加醒目和吸引人。
?
(2)角色、場景風格設定參考:角色(足球)和場景元素采用簡潔的卡通風格,參考一些低多邊形風格的游戲,讓畫面看起來清新可愛,符合休閑游戲的定位。
四、Unity 開發流程
1.項目創建與設置
(1)在 Unity 中新建項目流程:打開 Unity Hub,點擊 “新建”,選擇 3D 模板,設置項目名稱和存儲路徑,點擊創建,等待項目初始化完成。(第一次創建等待時間有點長)
步驟一:
步驟二:
(2)項目基本設置:
步驟一:改變窗口布局方式
步驟二:改變游戲界面的窗口分辨率
2.資源導入與管理
????????美術資源導入方法:將準備好的圖片、模型等美術資源直接拖放到 Unity 的 Project 視圖中,或者使用 Assets - Import New Asset 菜單導入,選擇你要導入的資源即可。
????????資源文件夾結構規劃:在 Project 視圖中創建 Materials(材質)、Scripts(腳本)、Scenes(場景)、Prefabs(預制體)等文件夾,將對應資源分類存放,方便管理和查找。
3.場景搭建
????????創建與布局場景:使用 Unity 的基本幾何體創建地面、墻壁等場景元素,通過調整位置、旋轉和縮放來布局場景。
步驟一:地面的搭建(在Hierarchy窗口——右擊——3D Obiect——Plane)
步驟二:對地面進行基礎設置(大家可以自己多試試,不一定非要和我的一樣)
步驟三:創建材質,命名為地面材質(如:floor_material),便于后期區分材質
步驟四:選中材質,對材質進行基礎設置。
步驟五:將修改好的材質直接 拖放到 創建的平面上
步驟六:墻壁的搭建(在Hierarchy窗口——右擊——3D Obiect——Cube)
步驟七:選中創建的Cube,復制三個Ctrl+D,分別命名為前后左右墻
步驟八:進行變形,移動等操作使之圍繞地面
TIPS:放到場景視圖,會發現有網格,每個網格大小為1m。
步驟九:創建材質,命名為墻壁材質(如:wall_material),然后進行個性化設置
步驟十:記得材質要? 拖放 到物體本身 才可以起作用
4.角色與對象創建
????????創建角色:足球模型和添加材質以及增加剛體和碰撞器。
主角:
墻壁和地面:都得確保有:Collider
Tips:添加 Rigidbody 組件用于物理模擬,添加 Box Collider 或 Sphere Collider 作為碰撞體;給墻壁等障礙物添加 Collider 組件,確保碰撞效果正常。
五、腳本編寫與代碼實現
1. FootBalll_Control 腳本:該腳本主要負責控制足球的移動、計分、處理碰撞事件以及實現游戲的退出功能。
using UnityEngine;
using TMPro;public class FootBalll_Control : MonoBehaviour
{public Rigidbody R1;public TextMeshProUGUI TextScore;public int score = 0;public GameObject Wintext;public AudioSource victoryMusic; public AudioSource eatSound; public GameObject tanhuang;void Start(){if (victoryMusic != null){victoryMusic.Stop();}}void Update(){float h = Input.GetAxisRaw("Horizontal");// 接受左右輸入float v = Input.GetAxisRaw("Vertical");// 接受前后輸入R1.AddForce(new Vector3(h, 0, v));if (Input.GetKeyDown(KeyCode.Escape)){QuitGame();}}private void OnTriggerEnter(Collider other){if (other.gameObject.tag == "Food"){eatSound.Play();score++;TextScore.text = score.ToString();Destroy(other.gameObject);if (score == 8){Wintext.SetActive(true);victoryMusic.Play();}}}// 退出游戲的方法void QuitGame(){
#if UNITY_EDITORUnityEditor.EditorApplication.isPlaying = false;
#else// 在發布后的應用程序中,使用Application.Quit()來退出游戲Application.Quit();
#endif}
}
R1:用于引用足球的剛體組件,以便對足球進行物理控制。
TextScore:用于顯示當前的游戲分數。
score:存儲當前的游戲分數,初始值為 0。
Wintext:代表勝利文本的游戲對象,當分數達到一定條件時顯示。
victoryMusic 和 eatSound:分別為勝利音樂和吃食物的音效,通過 AudioSource 組件播放。
tanhuang:代表彈簧的游戲對象,后續可能用于實現特殊的物理效果。
Start 方法:在游戲開始時調用,確保勝利音樂一開始不會播放。
Update 方法:通過 Input.GetAxisRaw 方法獲取玩家的水平和垂直輸入,然后使用 R1.AddForce 方法給足球施加力,從而實現足球的移動。
檢測玩家是否按下 Escape 鍵,如果按下則調用 QuitGame 方法退出游戲。
OnTriggerEnter 方法:當足球觸發具有 “Food” 標簽的游戲對象時,播放吃食物的音效,增加分數,更新分數顯示,并銷毀該食物對象。
當分數達到 8 時,顯示勝利文本并播放勝利音樂。
QuitGame 方法:根據游戲運行的環境,在編輯器中使用 UnityEditor.EditorApplication.isPlaying = false 退出播放模式,在發布后的應用程序中使用 Application.Quit() 退出游戲。
2. Follow_Camera_Scripts 腳本:該腳本用于實現相機跟隨足球的功能,確保相機始終保持與足球的相對位置。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Follow_Camera_Scripts : MonoBehaviour
{public Transform Tf_Camera;public GameObject Football;Vector3 distance=new Vector3();// Start is called before the first frame updatevoid Start(){distance= Tf_Camera.position-Football.transform.position;}// Update is called once per framevoid Update(){Tf_Camera.position= distance+Football.transform.position;}
}
Tf_Camera:相機的 Transform 組件,用于控制相機的位置。
Football:足球的游戲對象,相機將跟隨該對象移動。
distance:存儲相機與足球的初始相對位置。
Start 方法:在游戲開始時,計算相機與足球的初始相對位置。
Update 方法:在每一幀中,根據足球的當前位置和初始相對位置,更新相機的位置,從而實現相機跟隨足球的效果。
3. Food_Rotate 腳本:該腳本用于實現食物的旋轉效果,使游戲中的食物看起來更加生動。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Food_Rotate : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){transform.Rotate(new Vector3(0, 0.5f, 0), Space.World);}
}
Update 方法:在每一幀中,使用 transform.Rotate 方法讓食物繞 Y 軸旋轉,旋轉速度為 0.5 度,旋轉空間為世界空間。
六、游戲測試與發布
????????內部測試流程與方法:在 Unity 編輯器中進行多次測試,檢查游戲功能是否正常,如移動、得分、勝利條件等。
????????打包設置:在 Build Settings 中選擇目標平臺(如 Windows、Mac、Android 等),根據不同平臺的特點進行設置,如分辨率適配、權限設置等。
????????整合成安裝包:利用Inno Setup Compiler,教程見如下博客(后續發布)
?
七、總結與展望
????????在開發過程中,深入學習了 Unity 的各項功能和 C# 語言的應用,提高了自己的編程和問題解決能力。同時,也體會到游戲開發需要耐心和細心,從策劃到實現每個環節都至關重要。
八.結語
????????通過這三個腳本的協同工作,我們實現了一個簡單的足球小游戲。玩家可以通過鍵盤控制足球的移動,收集場景中的食物來增加分數,當分數達到 8 時獲得勝利。同時,相機跟隨足球移動,并且食物會不斷旋轉,增強了游戲的視覺效果。這個小游戲雖然簡單,但涵蓋了 Unity 中基本的物理控制、輸入處理、碰撞檢測、音效播放以及相機跟隨等功能,為進一步開發更復雜的游戲奠定了基礎。