Unity のプレイヤー アップグレード システム

このチュートリアルでは、Unity で基本的なアップグレード システムを作成する方法を説明します。アップグレード システムはゲームでは一般的で、プレイヤーは時間の経過とともにキャラクター、装備、または能力を向上させることができます。ここでは、プレイヤーが体力、速度、攻撃力などの属性を向上できるサンプルのアップグレード システムを作成します。

前提条件

  • Unity エディターがインストールされました。
  • C# と Unity の UI システムに関する基本的な理解。
  • 基本的なプレーヤー GameObject とアップグレード オプションを表示するための UI キャンバスでセットアップされたプロジェクト。

ステップ1: プレーヤーの属性を設定する

まず、アップグレードできるプレイヤーの属性を定義する C# スクリプトを作成します。このスクリプトには、体力、速度、攻撃力などのプロパティが保持されます。

using UnityEngine;

public class PlayerAttributes : MonoBehaviour
{
    public int health = 100;
    public float speed = 5f;
    public int attackPower = 10;

    public void IncreaseHealth(int amount)
    {
        health += amount;
        Debug.Log("Health increased to " + health);
    }

    public void IncreaseSpeed(float amount)
    {
        speed += amount;
        Debug.Log("Speed increased to " + speed);
    }

    public void IncreaseAttackPower(int amount)
    {
        attackPower += amount;
        Debug.Log("Attack Power increased to " + attackPower);
    }
}

この PlayerAttributes スクリプトをプレーヤーの GameObject にアタッチして、その属性を管理します。

ステップ2: アップグレードマネージャーを作成する

次に、アップグレード オプションを管理し、それをプレイヤーの属性に適用するための UpgradeManager スクリプトを作成します。このスクリプトを使用すると、各アップグレードのコストと、プレイヤーの属性がどれだけ増加するかを制御できます。

using UnityEngine;

public class UpgradeManager : MonoBehaviour
{
    public PlayerAttributes player;
    public int healthUpgradeCost = 50;
    public int speedUpgradeCost = 30;
    public int attackUpgradeCost = 40;

    public void UpgradeHealth()
    {
        if (CurrencySystem.Instance.SpendCurrency(healthUpgradeCost))
        {
            player.IncreaseHealth(10); // Increase health by 10
        }
    }

    public void UpgradeSpeed()
    {
        if (CurrencySystem.Instance.SpendCurrency(speedUpgradeCost))
        {
            player.IncreaseSpeed(0.5f); // Increase speed by 0.5
        }
    }

    public void UpgradeAttackPower()
    {
        if (CurrencySystem.Instance.SpendCurrency(attackUpgradeCost))
        {
            player.IncreaseAttackPower(5); // Increase attack power by 5
        }
    }
}

この UpgradeManager スクリプトは、プレイヤーが各アップグレードに十分な通貨を持っているかどうかを確認し、購入可能な場合はアップグレードを適用します。次に、アップグレードのコストを管理するための簡単な通貨システムを追加します。

ステップ3: シンプルな通貨システムを作成する

プレイヤーの通貨を追跡し、それをアップグレードに使用できる基本的な通貨システムを作成します。これは、ゲーム内のあらゆる経済に拡張できます。

using UnityEngine;

public class CurrencySystem : MonoBehaviour
{
    public static CurrencySystem Instance;
    public int currency = 100;

    private void Awake()
    {
        if (Instance == null)
            Instance = this;
        else
            Destroy(gameObject);
    }

    public bool SpendCurrency(int amount)
    {
        if (currency >= amount)
        {
            currency -= amount;
            Debug.Log("Currency spent: " + amount + ". Remaining: " + currency);
            return true;
        }
        else
        {
            Debug.Log("Not enough currency.");
            return false;
        }
    }

    public void AddCurrency(int amount)
    {
        currency += amount;
        Debug.Log("Currency added: " + amount + ". Total: " + currency);
    }
}

この CurrencySystem スクリプトは通貨を追加したり使用したりすることができ、シングルトンとして実装されているため、他のスクリプトから簡単にアクセスできます。シーン内の GameObject にアタッチします。

ステップ4: アップグレード用のUIを設定する

プレイヤーがアップグレード システムを操作できるようにするには、各アップグレード オプションのボタンを含む UI を Unity に作成します。方法は次のとおりです。

  1. シーン内にキャンバスを作成します (GameObject > UI > Canvas)。
  2. キャンバスにボタンを追加し、"Upgrade Health,"、"Upgrade Speed,"、"Upgrade Attack" というラベルを付けます。
  3. UpgradeManager スクリプトをシーン内の GameObject にアタッチし、Inspector の player フィールドにプレーヤー GameObject を割り当てます。
  4. 各ボタンの On Click イベントをリンクして、適切なアップグレード関数 (例: UpgradeManager.UpgradeHealth()) を呼び出します。

ステップ5: アップグレードシステムのテスト

ゲームを実行し、アップグレード ボタンを押してみてください。各アップグレードはプレイヤーの属性に適用され、それに応じて CurrencySystem によって通貨が減少するはずです。デバッグ ログを使用して、属性と通貨が期待どおりに更新されることを確認します。

結論

Unity では、プレイヤー属性、通貨システム、アップグレード マネージャーを含む基本的なアップグレード システムを作成しました。このシステムをカスタマイズして、アップグレードを追加したり、アップグレード コストを動的に増やしたり、ゲームの要件に基づいて新しいタイプのアップグレードを追加したりすることもできます。この基盤を拡張して、ゲームでより複雑で魅力的なアップグレード メカニズムを作成できます。