如何在 Unity C# 中创建多数组?

How To Make Multi Array in Unity c#?

如何将下面的变量转换成多数组变量?

代码示例:

public GameObject Mayonnaise;
    Text Qty;
    Text Price;
    Text Have;

    public GameObject Cheese;
    Text Qty;
    Text Price;
    Text Have;

    public GameObject Flour;
    Text Qty;
    Text Price;
    Text Have;

    public GameObject Sugar;
    Text Qty;
    Text Price;
    Text Have;

我想要那个游戏对象蛋黄酱包含数量、价格、数量;

所以看起来像:蛋黄酱["qty","Price","Have"]

所以我不需要创建太多相同的变量名。

Unity C# 怎么样?

谢谢

I want that gameobject Mayonnaise contain Qty, Price, Have;

游戏对象不能包含这些。看起来您正在寻找一种方法来保存这些变量,并且使用脚本来执行此操作是合适的。

So I no need to create too many variable name with the same one

您只需要一个包含每种食物类型的脚本。然后,您可以创建每种食物类型的数组。这就是这个问题对我来说的意思,希望我没看错。

如果仔细观察您的问题,您会发现 QtyPriceHave 变量出现在所有脚本中。这是应该使用 inheritance 的地方。

Food class:

public class Food
{
    protected Text Qty;
    protected Text Price;
    protected Text Have;

    public void setQty(Text Qty)
    {
        this.Qty = Qty;
    }

    public void setPrice(Text Price)
    {
        this.Price = Price;
    }

    public void setHave(Text Have)
    {
        this.Have = Have;
    }

    public Text getQty()
    {
        return this.Qty;
    }

    public Text getPrice()
    {
        return this.Price;
    }

    public Text getHave()
    {
        return this.Have;
    }
}

然后您可以创建 MayonnaiseCheeseFlourSugar classes 并从 Food 继承所有他们。

public class Mayonnaise : Food
{

}

public class Cheese : Food
{

}

public class Flour : Food
{

}

public class Sugar : Food
{

}

现在,要回答有关创建多个数组的问题,下面就是您要查找的内容。

const int Size = 4;

Mayonnaise[] mayonnaise;
Cheese[] cheese;
Flour[] flour;
Sugar[] sugar;

void Start()
{
    mayonnaise = new Mayonnaise[Size];
    cheese = new Cheese[Size];
    flour = new Flour[Size];
    sugar = new Sugar[Size];

    //Create instance of of them
    for (int i = 0; i < Size; i++)
    {
        mayonnaise[i] = new Mayonnaise();
        cheese[i] = new Cheese();
        flour[i] = new Flour();
        sugar[i] = new Sugar();
    }

    mayonnaise[0].setHave(SomeTextComponent);
    mayonnaise[0].getHave().text = "Some Text";
    string text = mayonnaise[0].getHave().text;
}