iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0

昨天完成了依照分數逐步解鎖不同殭屍,今天則開始製作技能。
這次的技能系統會使用昨天已經紀錄的「擊殺數」來作為解鎖條件。因為目前還沒有製作技能的實際效果,所以先從最基本的部分開始,讓玩家可以知道技能什麼時候已經解鎖。

目前設定為:

  • 擊殺數未達50:技能維持未解鎖圖片。
  • 擊殺數達到50:更換成亮版技能圖片。
    因此這次直接修改原本的ScoreManager,讓它在每次增加擊殺數時,同時檢查技能是否達到解鎖條件。
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 的圖片替換成設定好的亮版技能圖片。這樣玩家就能從畫面上的圖片變化,知道技能已經解鎖。

第二十四天的成果與之後目標

今天主要完成了以下幾個部分:

  • 技能解鎖條件:使用擊殺數作為技能解鎖條件。
  • 技能圖片切換:擊殺數達到50後,將技能圖片替換成亮版。
  • 技能狀態提示:透過圖片變化讓玩家知道技能是否已經解鎖。

目前技能只有完成「解鎖提示」,還沒有加入實際的使用效果。
接下來會再繼續製作技能的實際功能,讓玩家在解鎖技能後可以真正使用它。


上一篇
Day 23|依照分數逐漸加入不同目標
系列文
從基礎到實作:使用 Google AI 學習程式設計 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言