2016-03-29 2 views
1
erstellt wurden

Ich arbeite an einem RPG in Unity3d. Ich habe den Code erfolgreich umgestaltet, um eine SQL-Datenbank und in ein Singleton-Muster zu laufen. Die gameobject wird zur Laufzeit erstellt.So greifen Sie auf Listen zu, die in einer Singleton-Klasse von einem anderen Skript in Unity3d und C#

In jeder Tabelle erstelle ich eine Liste auf der Grundlage seiner Eigenschaft Skript; Ich erstelle es dort, weil es auf die Datenbank zugreift. Das andere Skript ist an der oberen Leiste angebracht, wo ich den Namen und die Werte des Charakters anzeigen möchte, aber ich habe Probleme, Zugriff auf die Liste zu erhalten.

PlayerDatabaseManager PDM; 

void Awake() 
{ 
    PlayerDatabaseManager.Instance.LoadPersonal(); 
} 

// Use this for initialization 
void Start() 
{ 
    PDM.GetComponent<PlayerDatabaseManager>.Personal(); 
    Personal = PDM.Personal.Name(); 
} 

Ich bin verwirrt was zu setzen wo. Muss Personal vom Typ databasemanager oder vom Typ personal sein?

+0

Wenn Ihre "Singletons" MonoBehaviour sind, wird es nie funktionieren, Ken. folge einfach den drei einfachen Punkten, die hier erklärt werden ... http://stackoverflow.com/a/35891919/294884 – Fattie

Antwort

1

Ich denke, Ihre Struktur ist ein bisschen verwirrt. Wenn PlayerDatabaseManager ein Singleton ist, sollten Sie nicht LoadPersonal von einer anderen Komponente aufrufen - es sollte sich damit befassen, wenn es benötigt wird, um gut gekapselt zu werden.

Wenn PDM bereits vom Typ PlayerDatabaseManager ist, müssen Sie GetComponent<PlayerDatabaseManager nicht darauf zugreifen.

Ich denke, was Sie wollen, ist:

1) In PlayerDatabaseManagerAwake():

Instance = this; 

2) In anderen Klassen, die Informationen zuzugreifen, zum Beispiel der Name in Personal

void Start() { 
    Name = PlayerDatabaseManager.Instance.Personal.Name() 
} 

3) Legen Sie die Ausführungsreihenfolge für PlayerDatabaseManager so fest, dass sie vor anderen Skripts ausgeführt wird, oder stellen Sie sicher, dass sie in der ersten Szene geladen ist e andere Spielobjekte mit Skripten, die darauf zugreifen.

+0

Vielen Dank Dave! –

Verwandte Themen