【问题标题】:Unity3D C#-Pass List value to another classUnity3D C#-将列表值传递给另一个类
【发布时间】:2014-10-15 10:42:13
【问题描述】:

请问如何将 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 值调用到另一个类但发现不起作用。实际上我想将游戏对象列表传递给另一个类,只是想了解一些想法。感谢您的帮助。

【问题讨论】:

  • 至少有几种方法可以做到这一点。你能展示你的第二节课吗?
  • 你的二等舱是MonoBehaviour吗?

标签: c# list unity3d


【解决方案1】:

为什么不在新的类构造函数中赋值呢?

Class1 -> Class2

你可以这样做:

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

【讨论】:

  • 所以它看起来像 Class2 newInstance=new Class2(passInt); ?
  • @edward au 成功了吗?如果这确实是您想要的,请考虑接受答案并投票,因为它会帮助其他人解决与您类似的问题。
  • 不工作,无论如何,如果我做对了,我会在这里更新。无论如何,谢谢。
  • @edward au 我编辑了我的问题。请查看编辑。它可能会有所帮助。如果有帮助,请接受答案并投票
  • 嗨@Lokuzt 感谢您发布的链接,它似乎工作。
【解决方案2】:

如果两个类都是脚本(由 MonoBehaviour 扩展),那么您不能将值从 A 类传递到 B 类构造函数。

但是,您可以执行以下任一操作: 1. 将要从 Class A -> Class 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 中

我希望这会有所帮助!

干杯,泽拉塔。

【讨论】:

    【解决方案3】:

    所以这实际上是我将 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;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多