[英]UNity3D, return value from one class/method to another class/method in Unity3D
[英]Unity3D C#-Pass List value to another class
我可以问一下如何将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值传递给另一个类,但是却无法正常工作。实际上我想传递一个列表将游戏对象转移到另一个类,只是试图获得一些想法。谢谢您的帮助。
为什么不在新的类构造函数中分配它?
1级-> 2级
您可以执行以下操作:
Class2 newInstance = new Class2(your_list_from_Class1);
构造函数可能类似于:
public Class2(List<something> listToPass){
this.list = listToPass;
}
我不确定我是否完全理解您的回答,但希望能有所帮助。 我要在这里留下一些可能对您有帮助的答案:
如果两个类都是脚本(由MonoBehaviour扩展),则不能将值从A类传递给B类构造函数。
但是,您可以执行以下任一操作:1.将要从A类-> 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作为脚本并从Class B中引用该变量的GameObject。
Variable localVariableName;
public GameObject OwnerOfClassA;
public void Start() {
localVariableName = OwnerOfClassA.GetComponent<ClassA>().VariableName;
}
在Unity3D编辑器中,只需将拥有classA的游戏对象拖到OwnerOfClassA中
我希望这有帮助!
干杯,扎拉塔。
所以这实际上是我在将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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.