![](/img/trans.png)
[英]You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. Unity Google AdMob
[英]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.