簡體   English   中英

如何修復統一警告:您正在嘗試使用“新”關鍵字創建 MonoBehavior?

[英]How do I fix the unity warning: You are trying to create a MonoBehavior using the 'new' keyword?

如何修復統一警告:您正在嘗試使用“新”關鍵字創建 MonoBehavior?

public class CardDatabase : MonoBehaviour
{
    public static List<Card> cardList = new List<Card>();

    private void Awake()
    {
        cardList.Add(new Card(0, "Blank", 1, 1, 1, "111b"));
    }
}

該警告幾乎可以解釋自己。 您的卡片類是MonoBehavior ,您不應使用“新”關鍵字來創建它。 您有兩種選擇:第一種選擇是從您的班級中刪除 MonoBehavior,如下所示:

public class CardDatabase: MonoBehaviour
{

    public class Card
    {
        public Card(int intVal1, string strVal1, int intVal2, int intVal3, int intVal4, string strVal2)
        {
            this.intVal1 = intVal1;
            this.strVal1 = strVal1;
            this.intVal2 = intVal2;
            this.intVal3 = intVal3;
            this.intVal4 = intVal4;
            this.strVal2 = strVal2;
        }
        public int intVal1;
        public string strVal1;
        public int intVal2;
        public int intVal3;
        public int intVal4;
        public string strVal2;
    }

    public static List<Card> cardList = new List<Card>();

    private void Awake()
    {
        cardList.Add(new Card(0, "Blank", 1, 1, 1, "111b"));
    }
}

第二種選擇是保留 Card 類的 MonoBehavior 並使用實例化或添加組件來創建新卡。 例如,這是您的卡片腳本:

public class Card : MonoBehaviour
{
    public int intVal1;
    public string strVal1;
    public int intVal2;
    public int intVal3;
    public int intVal4;
    public string strVal2;
}

這是你的另一個腳本:

public class CardDatabase: MonoBehaviour
{

    public static List<Card> cardList = new List<Card>();
    public Card cardPrefab = null; // Assign in the inspector

    private void Awake()
    {
        Card card = new GameObject("Card").AddComponent<Card>();
        card.intVal1 = 0;
        card.strVal1 = "Blank";
        card.intVal2 = 1;
        card.intVal3 = 1;
        card.intVal4 = 1;
        card.strVal2 = "111b";
        cardList.Add(card);

        // Or

        Card card2 = Instantiate(cardPrefab);
        card2.intVal1 = 0;
        card2.strVal1 = "Blank";
        card2.intVal2 = 1;
        card2.intVal3 = 1;
        card2.intVal4 = 1;
        card2.strVal2 = "111b";
        cardList.Add(card2);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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