从另一个脚本访问类中的类?

时间:2014-11-21 12:12:09

标签: c# list multidimensional-array unity3d

首先,我是Unity3D的新手,特别是编程。在这一刻,我尝试不同的东西,研究不同的文件,以创建一个经济模拟游戏。 如果我不立即理解你的解决方案,请怜悯我;)

我需要从另一个脚本访问二维列表。 在Script1中,我使用Class来制作2D

public class OrderArray : MonoBehaviour
{

    List<Order> orders;

    public class Order
    {
        public string company{ get; set; }
        public string date{ get; set; }
        public int quantity{ get; set; }
        public string deliverdate{ get; set; }
    }
    void Start()
    {
        orders= new List<Order>();

        orders.Add(new Order
        {   company = "Woodpecker Corp",
            date = "21.11.2014",
            quantity= 250,
            deliverdate= "29.11.2014" });



        // To access the Data in the list Im using:
        Order order1= orders[0];;
        Debug.Log(order1.company)
    }

到目前为止一切顺利。 Script1对我来说很好。

现在如何从同一个GameObject上的不同脚本访问“order1.company”?

我知道如何在Script1和Class Script中访问变量,但我不能让它在“Order”类中考虑变量。

我的Script2到现在的结果

public class menu : MonoBehaviour
{
    OrderArray orderarray;
    Orderarray.Order orderclass;

    void start()
    {
        orderarray= gameObject.GetComponent<OrderArray>();
    }

现在我可以访问OrderArray类,但我不知道如何在OrderArray中访问类Order。

也许你可以给我一个解决方案或我可以为我的问题转移的示例代码。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用GetOrderByIndex方法扩展OrderArray:

public Order GetOrderByIndex(int index){
  return orders[index];
}

您可以在开头使用它:

   void start()
     {
         orderarray= gameObject.GetComponent<OrderArray>();
         Order order1 = orderarray.GetOrderByIndex(0);
         //do what you want with order1
     }

答案 1 :(得分:0)

做像Mark Smit这样的事情可能是最好的。你应该考虑的一件事是制作&#34; Order&#34;一个结构而不是一个类,因为它不包含大量数据,而且你会想到一堆它们。有关详细信息,请查看this。并将一个构造函数添加到&#34; Order&#34;为了更容易创建一个新的 - &gt;

new Order("Woodpecker Corp", "21.11.2014", 250, "29.11.2014")