2017-05-19 2 views
-2

私は2つの別々のモノハバードを持っています.1つはCardで、4つのスーツの列挙型とスーツとフェースの2つの値のコンストラクタがあります。 2番目のデッキには、各ループのためにカードのインスタンスが作成されています。私の52枚のカードは、forループを使用してenumごとに13枚のカードを作成しますが、インスタンスを作成しようとするとnewは許されず、addcomponentはこれを行う方法ですが、動作させることはできません。まもなく精査のためにコードをアップロードできます。単葉問題

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Linq; 
using UnityEngine; 

public class Deck : MonoBehaviour 
{ 
    public int minVal = 1; 
    public int maxVal = 13; 
    List<Card> _cards = new List<Card>(); 
    public void Awake() 
    { 
     foreach (var Suit in Enum.GetValues(typeof(Card.Suit)).Cast<Card.Suit>()) 
     { 
      for (int i = minVal; i <= maxVal; i++) 
      { 
       _cards.Add(new Card(Suit, i)); 
      } 
     } 
    } 
} 

これはデッキです。下のカードである:

using System; 
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Card : MonoBehaviour 
{ 
    public enum Suit { Clubs, Hearts, Diomonds, Spades }; 

    public Suit suit; 

    public int faceValue; 

    public Card(Suit _suit, int _faceValue) 
    { 
     suit = _suit; 
     faceValue = _faceValue; 

    } 
} 
+0

"まもなく精査のためにコードをアップロードできます。"常にこれを行います - 必ずしも実際のコードではなく、質問の最初のバージョンを尋ねる前に[mcve] - *コードを記述するだけではほとんど役に立ちません。 –

+0

必要なすべての情報があり、コンストラクタは許可されていないので、addComponentを使用する必要があります。どのような問題がありますか? addComponentを見たことがありますか? – ElDuderino

+0

そして、コメントにコードを入れないでください。質問を編集して正確なエラーメッセージを含めてください。 –

答えて

0

Unity Docsによると、

MonoBehaviourは、すべてのユニティスクリプトが由来する基底クラスです。

スクリプトはコンポーネントではなく、MonoBehaviour関数を使用しません。これは単なるC#クラスです。

この問題を解決するには、CardクラスをMonoBehaviourから継承しないでください。 public class Card : MonoBehaviourpublic class Cardに変更するだけです。

カードスクリプトからusing UnityEngine;も削除できるようになりました。