Système de mise à niveau des joueurs dans Unity

Ce didacticiel vous guidera dans la création d'un système de mise à niveau de base dans Unity. Les systèmes de mise à niveau sont courants dans les jeux, permettant aux joueurs d'améliorer leurs personnages, leur équipement ou leurs capacités au fil du temps. Nous allons créer un exemple de système de mise à niveau qui permet à un joueur d'augmenter des attributs comme la santé, la vitesse et la puissance d'attaque.

Prérequis

  • Unity Éditeur installé.
  • Compréhension de base de C# et du système d'interface utilisateur d'Unity.
  • Un projet mis en place avec un GameObject de joueur de base et un UI Canvas pour afficher les options de mise à niveau.

Étape 1: Configurer les attributs du joueur

Tout d'abord, créez un script C# pour définir les attributs du joueur qui peuvent être améliorés. Ce script contiendra des propriétés telles que la santé, la vitesse et la puissance d'attaque.

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);
    }
}

Attachez ce script PlayerAttributes à votre GameObject de joueur pour gérer ses attributs.

Étape 2: Créer le gestionnaire de mise à niveau

Ensuite, créez un script UpgradeManager pour gérer les options de mise à niveau et les appliquer aux attributs du joueur. Ce script vous permettra de contrôler le coût de chaque mise à niveau et l'augmentation des attributs du joueur.

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
        }
    }
}

Ce script UpgradeManager vérifie si le joueur a suffisamment de monnaie pour chaque mise à niveau, puis applique la mise à niveau si elle est abordable. Ensuite, nous ajouterons un système de monnaie simple pour gérer les coûts de mise à niveau.

Étape 3: Créer un système monétaire simple

Nous allons créer un système de monnaie de base qui permet de suivre la monnaie du joueur et de la dépenser pour des améliorations. Ce système peut être étendu à n'importe quelle économie du jeu.

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);
    }
}

Ce script CurrencySystem peut ajouter et dépenser de la monnaie, et il est implémenté en tant que singleton afin que vous puissiez y accéder facilement à partir d'autres scripts. Attachez-le à un GameObject dans la scène.

Étape 4: Configurer l'interface utilisateur pour les mises à niveau

Pour permettre aux joueurs d'interagir avec le système de mise à niveau, créez une interface utilisateur dans Unity avec des boutons pour chaque option de mise à niveau. Voici comment procéder:

  1. Créez un Canvas dans votre scène (GameObject > UI > Canvas).
  2. Ajoutez des boutons au canevas, en les étiquetant "Upgrade Health," "Upgrade Speed," et "Upgrade Attack".
  3. Attachez le script UpgradeManager à un GameObject dans la scène et attribuez votre GameObject de joueur à son champ player dans l'inspecteur.
  4. Liez l'événement On Click de chaque bouton pour appeler la fonction de mise à niveau appropriée (par exemple, UpgradeManager.UpgradeHealth()).

Étape 5: Test du système de mise à niveau

Lancez le jeu et essayez d'appuyer sur les boutons de mise à niveau. Chaque mise à niveau doit s'appliquer aux attributs du joueur et le CurrencySystem doit diminuer la devise en conséquence. Utilisez le journal de débogage pour confirmer que les attributs et la devise sont mis à jour comme prévu.

Conclusion

Nous avons créé un système de mise à niveau de base dans Unity, comprenant des attributs de joueur, un système de monnaie et un gestionnaire de mise à niveau. Vous pouvez personnaliser ce système pour ajouter plus de mises à niveau, augmenter les coûts de mise à niveau de manière dynamique ou même ajouter de nouveaux types de mises à niveau en fonction des exigences de votre jeu. Cette base peut être étendue pour créer des mécanismes de mise à niveau plus complexes et plus attrayants dans vos jeux.