Niveaux des tours
Leçon 16 sur 25 du cours Jeu Unity : défense de tours de Coddy.
Les tours seront améliorées : chaque niveau augmente les dégâts et la portée, et chaque amélioration coûte plus cher que la précédente. Les niveaux suivent une règle ; l’asset contient donc la règle plutôt qu’une liste de nombres, et les méthodes de la ScriptableObject effectuent le calcul, afin que chaque script qui le demande obtienne la même réponse. La récolte d’un jeu de ferme :
public int YieldAt(int level)
{
return baseYield + yieldPerLevel * (level - 1);
}Le niveau 1 correspond à la valeur de base. La tour ne conserve que son propre level et tire avec les nombres correspondant à ce niveau.
Défi
MoyenAjoutez des niveaux aux tours.
- Dans
TowerData, ajoutez les entiers publicsmaxLevel,upgradeCostetdamagePerLevel, ainsi que le flottant publicrangePerLevel. - Ajoutez
DamageAt(int level):damage + damagePerLevel * (level - 1);RangeAtde la même manière ;UpgradeCost(int level):upgradeCost * level. - Dans
Tower, ajoutezprivate int level = 1;,public int Level => level;etpublic void Upgrade() { level++; }; tirez en utilisantDamageAt(level)dans la portée définie parRangeAt(level).
Appuyez sur « Jouer » : les tours combattent comme avant. Puis appuyez sur « Vérifier ».
Essayez vous-même
using UnityEngine;
[CreateAssetMenu(fileName = "NewTower", menuName = "Tower Defense/Tower Data")]
public class TowerData : ScriptableObject
{
public string towerName;
public int cost = 50;
public int damage = 2;
public float range = 4f;
public float fireRate = 1f;
}
Toutes les leçons de Jeu Unity : défense de tours
Entraînez-vous par vous-même : Playground Unity