2017-12-18 6 views
0

Ich kann es einfach nicht schaffen, ein öffentliches Objekt zu dem Dcript hinzuzufügen, das ich habe. Es gibt Code:Fügen Sie ein benutzerdefiniertes Objekt zum Skript hinzu

public class Player : MonoBehaviour { 

public string charName = ""; 
public int currentLevel = 0; 
public int experiense = 0; 
public int strength  = 1; 
public int agility  = 1; 
public int maxHealth = 30; 
public float currentHealth = 30; 
public int maxActionPoints = 5; 
public int currentLevelPoints = 10;} 

gibt es ein weiteres Skript, wo ich eine öffentliche Eigenschaft mit dieser Klasse hinzufügen möchten

public class CharManager : MonoBehaviour { 

public GameObject currentCharacter; 
public GameObject charMenu; 
public Player currentPlayerStats; 

public void changeCharacter(GameObject character) 
{ 
    if (currentCharacter){ 
     saveCharacter(); 
    } 

    currentCharacter = character; 
    loadSavedInfo(); 

} 

void loadSavedInfo() 
{ 

    string playerJson = ""; 
    if (currentCharacter.tag== "Man") 
    { 

     if (File.Exists(Application.persistentDataPath +"/Char1.json")) 
     { 
      playerJson = File.ReadAllText(Application.persistentDataPath +"/Char1.json"); 
     } 

    } 
    else 
    { 
     if (File.Exists(Application.persistentDataPath +"/Char2.json")) 
     { 
      playerJson = File.ReadAllText(Application.persistentDataPath +"/Char2.json"); 
     } 
    } 


    if (playerJson != string.Empty) 
    { 
     Player thePlayer = JsonConvert.DeserializeObject<Player>(playerJson); 

     currentPlayerStats = thePlayer; 

    } 
    else 
    { 
     currentPlayerStats = gameObject.AddComponent<Player>() as Player; 
    } 
} 

Dieser Code NEW-Player-Komponente hinzufügen und currentPlayerStats haben Klasse Charmanager ... was bin ich mache falsch? Jede Hilfe wird sehr geschätzt!

+0

Aus dem Code, den Sie hier kopiert haben, scheint die Player-Klasse kein MonoBehaviour zu sein ..? Es enthält nur statistische Werte, vielleicht versuchen Sie es nicht zu einem MonoBehaviour zu machen? – johnkork

+0

Ich habe versucht, das zu tun. Wie könnte ich diese Eigenschaft von einem anderen Skript erhalten? GetComponent funktioniert nicht. – Pavel

Antwort

1

gameObject.AddComponent() fügt dem Spielobjekt eine von MonoBehaviour abgeleitete Komponente hinzu. Spieler leitet sich nicht von MonoBehaviour so kann es nicht

hinzugefügt werden Sieht aus wie Spieler nur eine ganz normale Klasse ist, so dass Sie nur ein Objekt dieser Klasse erstellen können

Player currentPlayerStats = new Player(); 
+0

öffentliche Klasse Spieler: ** MonoBehaviour **. So ist es MonoBehaviour abzuleiten. – Pavel

+0

Ich kann nicht glauben, dass ich das nicht gesehen habe, ich habe es dreimal überprüft, es tut mir so leid. Aber jetzt kann ich nicht sehen, was das Problem ist. –

+0

Kein Problem. Ich habe es gelöst. Danke für die Antwort! – Pavel

0

ich es herausgefunden. Die Player-Klasse darf keine MonoBehaviour-Klasse sein. Eine Klasse, wo ich die Spielerklasse zugreifen müssen sollte eine öffentliche Eigenschaft hat:

public Player thePlayer; 

nicht

public GameObject thePlayer; 

Danke an alle!

Verwandte Themen