Unity3D C#-Pass列出另一个类的值

时间:2014-10-15 10:42:13

标签: c# list unity3d

我可以问一下如何将List值传递给另一个类吗?例如:

using System.Collections.Generic;
public class PassListClass : MonoBehaviour
{
 List<int> passInt=new List<int>();

 public void Start()
 {
  passInt.Add(1);
  passInt.Add(3);
 }

 .
 .
 .
}

所以我想将1和3传递给另一个类,在创建类实例后我应该怎么做并在另一个类中调用它?我已经尝试将List值调用到另一个类但看不到工作。实际上我想要将一个游戏对象列表传递给另一个类,只是想了解一下。谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

为什么不在新的类构造函数中分配它?

Class1 - &gt;等级2

您可以执行以下操作:

Class2 newInstance = new Class2(your_list_from_Class1);

构造函数可以是:

public Class2(List<something> listToPass){
    this.list = listToPass;
}

我不确定我完全理解你的答案,但我希望我帮助过。我要留下一份可能对你有帮助的答案清单:

Passing value from one class to another

Passing a list to another class

答案 1 :(得分:0)

如果两个类都是脚本(由MonoBehaviour扩展),则无法将类A中的值传递给B类构造函数。

但是,您可以做的是1.设置您想要从A类传递的变量 - &gt; B类变成静态变量。然后你可以使用

在B组内

 Variable localVariableName;
 public void Update() { 
    if(localVariableName==null)
    localVariableName = ClassA.VariableName; 
 }
 // -- OR if you know that ClassA will run before ClassB --
 public void Start() {
     localVariableName = ClassA.VariableName; 
 }

- 或 - 如果您不想使用静态变量,您可以找到具有ClassA作为脚本的GameObject,并在Class B中引用该变量

 Variable localVariableName;
 public GameObject OwnerOfClassA;
 public void Start() {
     localVariableName = OwnerOfClassA.GetComponent<ClassA>().VariableName; 
 }

在Unity3D编辑器中,只需将拥有classA的游戏对象拖入OwnerOfClassA

我希望这有帮助!

干杯,Zerratar。

答案 2 :(得分:0)

所以这实际上就是我将List值传递给另一个类时所做的。希望它有所帮助。

    public class ListClass : MonoBehaviour
{
  List<int> intList=new List<int>();
  private static ListClass instance;      

  public void Start()
  {
    intList.Add(1);
    intList.Add(2);
    lnstance=this
  }
}

另一个班级

 public class ValueFromListClass : MonoBehaviour
{
   private ListClass listClass;
   List<int> valueFromListClass=new List<int>();

   public void Start()
   {
     listClass=ListClass.instance;
     valueFromListClass=listClass.intList;
   }
}
相关问题