昨天完成了依照分數逐步解鎖不同殭屍,今天則開始製作技能。
這次的技能系統會使用昨天已經紀錄的「擊殺數」來作為解鎖條件。因為目前還沒有製作技能的實際效果,所以先從最基本的部分開始,讓玩家可以知道技能什麼時候已經解鎖。
目前設定為:
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class ScoreManager : MonoBehaviour
{
public static ScoreManager Instance;
[Header("數據紀錄")]
public int totalScore = 0; // 總得分
public int killedZombieCount = 0; // 擊殺總隻數
[Header("UI 顯示元件")]
public TextMeshProUGUI scoreText; // 顯示總得分的 Text
public TextMeshProUGUI countText; // 顯示擊殺數的 Text
[Header("技能 UI 圖片更換設定")]
public Image skillImage; // 左下角的技能 Image 元件
public Sprite readySkillSprite; // 滿 50 殺要替換進去的【亮版技能圖片】
public int skillUnlockThreshold = 50; // 解鎖門檻(預設 50 殺)
private bool isSkillUnlocked = false; // 是否已解鎖標記
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
else
{
Destroy(gameObject);
}
}
private void Start()
{
UpdateUI();
}
// 增加分數與擊殺數的方法
public void AddScore(int amount)
{
totalScore += amount;
killedZombieCount += 1;
// 檢查是否達到技能解鎖條件(擊殺數 >= 50)
CheckSkillUnlock();
UpdateUI();
}
// 檢查技能解鎖狀態
private void CheckSkillUnlock()
{
if (!isSkillUnlocked && killedZombieCount >= skillUnlockThreshold)
{
isSkillUnlocked = true;
// 替換 Sprite 為亮圖片
if (skillImage != null && readySkillSprite != null)
{
skillImage.sprite = readySkillSprite;
}
Debug.Log("技能已解鎖!更換為亮版技能圖片!");
}
}
// 更新 UI 畫面
private void UpdateUI()
{
if (scoreText != null) scoreText.text = $"Score: {totalScore}";
if (countText != null) countText.text = $"Zombies: {killedZombieCount}";
}
}
這次主要是讓ScoreManager除了紀錄分數和擊殺數之外,也能負責判斷技能是否解鎖。當玩家擊殺一隻殭屍時,會增加 killedZombieCount,接著檢查是否達到50。如果達到50,就會將 skillImage 的圖片替換成設定好的亮版技能圖片。這樣玩家就能從畫面上的圖片變化,知道技能已經解鎖。
今天主要完成了以下幾個部分:
目前技能只有完成「解鎖提示」,還沒有加入實際的使用效果。
接下來會再繼續製作技能的實際功能,讓玩家在解鎖技能後可以真正使用它。