簡體   English   中英

Unity3D C#-將列表值傳遞給另一個類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM