2017-05-19 2 views
-2

두 개의 분리 된 모노브 하비에이 중 하나 인 Card는 4 개의 수트에 대한 열거 형과 수트와 액면가의 두 값에 대한 생성자를 가지고 있습니다. 두 번째 덱에는 각 루프마다 내 카드의 인스턴스를 만들 수 있습니다. 열거 당 13 개의 카드를 제한하는 for 루프를 사용하여 52 개의 카드를 만들지 만, 인스턴스를 만들려고 할 때 new가 허용되지 않는다고 말하면 addcomponent는이를 수행하는 방법이지만 작동시키지 못한다. 곧 코드를 업로드하여 조사 할 수 있습니다.Monobehavior issues

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;을 삭제할 수 있습니다.