所以我为'Tower'制作了一个公共结构,其中包含了我的塔防游戏中塔的所有变量。
fileB.py
稍后在脚本中,我有一个用于塔类型的公共枚举,它们从Tower结构中获得变量的统计信息。
public struct Tower
{
// Variables for Tower
public string Name;
public int type, Price, Count;
public float range, Cooldown, CurrCooldown;
public Sprite Spr;
public Tower(string Name, int type, float range, float cd, int Price, int Count, string path)
{
this.Name = Name;
this.type = type;
this.range = range;
this.Count = Count;
Cooldown = cd;
this.Price = Price;
Spr = Resources.Load<Sprite> (path);
CurrCooldown = 0;
}
我为塔楼制作了公开名单
public enum TowerType // The type of tower selected. Each have different stats based on public lists (see below)
{
FIRST_TOWER,
SECOND_TOWER,
THIRD_TOWER
}
并为每种塔类型添加了唯一的变量值
public class GameControllerScr : MonoBehaviour {
public List<Tower> AllTowers = new List<Tower> ();
我想知道的是我如何为每座塔楼提供“TowerCount”。在我的游戏中,您可以在地图上的任何位置构建一个塔,玩家可以选择在商店面板中选择三个塔中的任何一个。
private void Awake()
{
AllTowers.Add (new Tower ("Laser Piercer", 0, 2, .5f, 20, 1, "TowerSprites/FTower")); // Name, type, range, Cooldown, price
AllTowers.Add (new Tower ("Horde Destroyer", 1, 3, 3f, 40, 2, "TowerSprites/STower"));
AllTowers.Add (new Tower ("Freeze Ray", 2, 2, 1f, 30, 3, "TowerSprites/TTower"));
如何区分每个塔,并创建一个单独的变量,这些变量根据地图上塔型的数量而变化(例如,有3个1型塔,2个2型塔和0个3型塔)。
答案 0 :(得分:0)
您可以探索的选项是塔组件脚本,或者附加到每个对象的任何脚本,您可以包含一个可以轻松引用的静态列表。
我对你的代码不熟悉,知道它会是什么类。但是,让我们说每个塔上都有一个组件,即#Tower; TowerComponent&#34;。所以你可以:
public class TowerComponent: MonoBehaviour
{
public static Dictionary<TowerComponent, TowerType> currentTowers =
new Dictionary<TowerComponent, TowerType>();
private void Awake()
{
currentTowers.Add(this, typeOfTower);
}
}
这基本上只是说每当塔进入场景时,它会自动添加到自己的引用字典中,您可以从任何地方引用它。你可以说:
TowerComponent.curentTowers.Count(x=>x.value == towerType);
这将返回您在任何脚本中寻找的塔类型的数量。这将导致依赖,但它是一种获得你所追求的东西的方式。