Jump to content
Unity Insider Forum
Sign in to follow this  
Zumbibaer

Datenbank > ScritableObjects > Verwalten von eindeutigen Keys

Recommended Posts

Hallo zusammen,

vor kurzem bin ich auf das Problem gestoßen, das ich einfach mehr Items / Assets im Spiel benötige wie ich selber von Hand im Editor über ScriptableObjects erstellen möchte.
Also die Funktionalität an sich ist super aber wenn ich mehr wie 1000 Items anlegen möchte, wollte ich das nur ungern über den UnityEditor machen.
Zum einen fehlt mir da die Übersicht über alle meine vorhandenen Objekte von Typ XYZ. Eine tabellarische Darstellung wäre toll, in der ich gleich Einträge editieren kann!
(Wenn es so etwas geben sollte, und ich es einfach nicht finde, würde sich der Rest dieses Threads erledigen!!).


Kurzum habe ich MySQL geöffnet, eine Datenbank sowie direkt noch eine Datenbank-Anwendung (in Java) geschrieben zum verwalten und einfachem hinzufügen / editieren von Daten.
In Unity dann noch über den Editor einen passenen Import geschrieben der alle Daten importiert und als Asset Files ablegt.
Eigentlich könnte ich hier schon auf ScritableObjects verzichten und direkt eigene Strukturen verwenden, aber so habe ich immernoch die Möglichkeit im Imspector alles auf Richtigkeit zu prüfen. Kann ich dann ja immernoch rauswerfen.

Nun muss ich natürlich in meiner Datenbank-Anwendung diverse Konstanten haben (zB. Item-Stat Definitionen) sowie auch in Unity.
Diese habe ich auch über die Datenbank verwaltet. Sprich es existieren Tabellen mit Inhalten wie:
ID=1,Name=Dodge_P
ID=2,Name=Parry_P
Welche dann auch einfach über die Anwendung hinzugefügt, entfernt, und natürlich am wichtigsten, den Items zugeordnet werden können.

Und genau diese Informationen brauche ich in Unity um anhand der ItemWerte die tatsächlichen Gesamt-Werte sowie aktuellen Player-Stats  zu ermitteln.
Dazu sollte ich natürlich auch wissen welche "ID", Dodge ist.

Nun kann ich mir zwar diese Daten als ScritableObjects nach Unity importieren, aber im Code weiss ich dann immernoch nicht welche ID "Dodge" ist.
Gelöst habe ich es einfach über Konstanten im Code. Also zB ITEMSTAT_DODGE_P = 1 - aber so richtig zufrieden bin ich damit nicht.

Warum?
Nun die ID's von bestehenden Datensätzen werden sich niemals ändern. Es seidenn man spielt direkt in der Datenbank rum,  aber so habe ich dennoch eine
Lücke in meinem doch in sich konsistenten Datenbank-System.
Dies mag etwas übertrieben sein, aber ich muss ehrlich sein. Ich bin faul.. und gerade solche Fehler sollten doch vermieden werden, daher hier meine Frage in die Runde, wie
ihr solche Probleme angeht?

Während ich den Beitrag geschrieben habe, ist mir eine Idee gekommen um dies zu umgehen.
Wenn ich alle diese Konstanten in eine C# File schreibe, dann könnte ich diese ja rein theoretisch auch über den Datenbank-Import löschen und neu erstellen.
Sprich ich lösche den Inhalt aus der Datei und schreibe den Code über den Import neu hinein. Zu drastisch?

Nun ich freue mich auf Anregungen :)

 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Moin,

mit Konstanten meinst Du, dass Du z.B. eine Tabelle für Item Typen hast und diese Typen haben eine Primärschlüssel ID?

Konstanten in eine dynamisch generierte Klasse schreiben ist eine Möglichkeit, ich sehe da kein Problem.

Alternativ kannst Du auch ein enum generieren, wenn es sich immer um Integer IDs handelt.

public enum ItemStatIds
{
	Ente = 1,
	Brot = 2,
	Mensch = 3
	//...
}

//...

if(Item.Id == ItemStatIds.Ente) { /*...*/ }

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×