Jump to content
Unity Insider Forum
Kuxii

Unity und SQL

Recommended Posts

So möchte mein Spiel nun doch auf SQL für Bestimmte Player Daten nutzen, Auto Werte,Preise,KM usw...

Jetzt benötige ich ein wenig Hilfe, Beim sachen Einschreiben,Auslesen Erstellen usw.. SQL in C# ist es nun das erste mal, lua oder so wäre kein thema.

zwar schon etwas gefunden aber alles nur in Java das was ich vermeiden Möchte, Will keine Mix Sprachen in meinem Game haben^^

das hier -> http://wiki.unity3d.com/index.php/SQLite

sieht auch nett aus jedoch js. Bitte um Hilfe wenn möglich in Deutsch^^

Share this post


Link to post
Share on other sites

Mein Einstieg in Programmierung war der Wunsch Tools für ein Spiel zu schreiben, bei dem ich eine für zwei Jahre als Betatester mitgewirkt habe (Maximum Football). Da es sich um eine amerikanische Sportart handelte, sind natürlich Statistiken ein wichtige Sache und der Developer benutzte eine Access-Datenbank, die offen war und bearbeitet werden konnte. Nachdem er das Projekt aufgeben musste, habe ich eine Zeitlang an einem Mod gearbeitet, den ich dann nicht fertiggestellt habe, weil mit Windows Vista und 7 das Spiel nicht mehr richtig dargestellt werden konnte.

Für meine Tools habe ich aber nie die Access-Datenbanken als Grundlage genommen (die natürlich für das Spiel selbst weiter die Grundlage blieben), sondern habe ich mich für Microsoft SQL entschieden, dass immer als Bestandteil der VS Express-Pakete mitgeliefert wurde. Zum Einstieg benutzte ich einige Angebote von Microsoft zu dem Thema (z.B. Webcasts) und später das Buch von Doberenz und Gewinnus.

Microsoft SQL ist ziemlich leistungsfähig und umfangreich - für eine simple Spieledatenbank natürlich der absolute Overkill vom Funktionsumfang, aber trotzdem recht nützlich. Ich persönlich würde die Zeit opfern, um mich ein wenig einzuarbeiten, denn es lohnt sich später:

- Man kann lokale Datenbanken schaffen, d.h. Datenbanken die auf der Festplatte liegen.

-  SQL verwendet eigenen Datentypen, die .net nicht unähnlich sind, aber trotzdem eigene Eigenschaften aufweisen

- SQL erlaubt einen "direkten" Einblick in die Datenbank und Daten (hilfreich z.B. bei Kontrolle der Daten nach Berechnungen)

- Aufbau, Abfrage und Speichern von Daten benötigt für einfache Fälle wie eine Spieldatenbank nur wenige Zeilen Code - darauf weisen auch die Autoren in dem obigen Buch hin. Es gibt zwar Assistenten, die legen aber Datenbanken automatisch an allerdings in einer Tiefe, die für alle möglichen Zwecke ausgelegt und Sicherungen ausgelegt sind, so dass schnell Tausend Zeilen Code zusammenkommen. Mit einer eigenen Einbindung benötigt man nur einen Bruchteil und kontrolliert den Code.

Hier ein paar Beispiele aus einem meiner damaligen Projekte (allerdings in Visual Basic / aus dem Jahr 2009):

1. Schritt: Kontakt zur Datenbank (hier zwei DB: SQL and Access) herstellen:

Imports System.Data.SqlClient

// connStr = connection String (Pfad)

// da -> DataAdapter , ds-> DataSet

Dim connStr As String = _
        "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Football Project\Project_CFA\CFA.mdf;" & _
        "Integrated Security=True;User Instance=True;"
        conn = New SqlConnection(connStr)
 
Dim connStrMF As String = _
        "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Football Project\Project_CFA\lge_CFA.mdb;"
        connMF = New OleDb.OleDbConnection(connStrMF)
 
2. Schritt: Team und Player -Daten in ein Dataset laden (nur SQL)
 
        conn.Open()
 
        ' Team
        Dim cmdTxtTeam As String = "SELECT * FROM TEAM"
        Dim cmdTeam As New SqlCommand(cmdTxtTeam, conn)
        daTeam = New SqlDataAdapter(cmdTeam)
        dsTeam = New DataSet
        daTeam.MissingSchemaAction = MissingSchemaAction.AddWithKey
        daTeam.Fill(dsTeam, "Team")
        dtTeam = dsTeam.Tables("Team")
 
        '  Player
        Dim cmdTextPlay As String = "SELECT * FROM Player"
        Dim cmdPlay As New SqlCommand(cmdTextPlay, conn)
        daPlay = New SqlDataAdapter(cmdPlay)
        dsPlayer = New DataSet
        daPlay.MissingSchemaAction = MissingSchemaAction.AddWithKey
        daPlay.Fill(dsPlayer, "Player")
        dtPlay = dsPlayer.Tables("Player")
 
        conn.Close()

3. Arbeiten mit dem Dataset im Programm (außerhalb der DB - siehe conn.Close)

4. Abspeichern der Daten

        Private Sub MainBaseUpdate()
        Dim cbTeam As New SqlCommandBuilder(daTeam)
        daTeam.Update(dsTeam, "Team")
        Dim cbPlay As New SqlCommandBuilder(daPlay)
        daPlay.Update(dsPlayer, "Player")
        End Sub

Zum Abrufen von Daten aus einer Datenbank kann man einen Datenreader nehmen, der die Sache noch etwas vereinfacht. Aber danach kann man die geänderten Daten nicht in der DB speichern. Ein Beispiel kann ich bei Bedarf auch noch zur Verfügung stellen.

 

 

Share this post


Link to post
Share on other sites

Hey,

hab vor einer Weile auch angefangen mich mit Unity & SQL zu beschäftigen.

Hab mir dazu 2 Tutorials angesehen, die ich für den Einstieg als gut empfinde. Natürlich ausbau fähig, aber die Grundlegenden Funktionen sind dort angesprochen.

Haken beide Tutorials sind auf English, aber ich denke damit kommst du zurecht. Beide arbeiten mit PHP scripten und XAMPP für eine MySQL Datenbank. Wenn ich mich recht entsinne wird dir am Ende auch gezeigt, wie du von XAMPP weg gehst & übers Internet bei kostenlosen "Datenbank Anbietern" die Datenbank übernimmst und Unity dort dann drauf zugreift.

 

Für den Anfang ist es sicherlich ganz gut, schau am besten mal rein & mache dir selbst ein Bild. Hoffe ich kann dir damit helfen.

Tutorial I:

 

Tutorial II:

 

Share this post


Link to post
Share on other sites
vor 8 Stunden schrieb NewbiLars:

Hey,

hab vor einer Weile auch angefangen mich mit Unity & SQL zu beschäftigen.

Hab mir dazu 2 Tutorials angesehen, die ich für den Einstieg als gut empfinde. Natürlich ausbau fähig, aber die Grundlegenden Funktionen sind dort angesprochen.

Haken beide Tutorials sind auf English, aber ich denke damit kommst du zurecht. Beide arbeiten mit PHP scripten und XAMPP für eine MySQL Datenbank. Wenn ich mich recht entsinne wird dir am Ende auch gezeigt, wie du von XAMPP weg gehst & übers Internet bei kostenlosen "Datenbank Anbietern" die Datenbank übernimmst und Unity dort dann drauf zugreift.

 

Für den Anfang ist es sicherlich ganz gut, schau am besten mal rein & mache dir selbst ein Bild. Hoffe ich kann dir damit helfen.

Tutorial I:

 

Tutorial II:

 

Die habe ich mir schon Angesehen Aber mir gefällt dier PHP version nicht, Hätte lieber eine Direkte Verbindung, Arbeite zur Zeit mir SQLLite, Erstellen, und werte Schreiben tut die datenbank bis jetzt.Jedoch Funktioniert das Laden der Werte bis jetzt nicht.Später mal sehen wie ich es mit einer MySQL Datenbank am Bessten Syncrinisiere, Hatte erst an ein Script gedacht was via Chronjob aktualisiert,... Aber bis es Soweit ist dauert noch ein Stück.

 

EDIT KANN GESCHLOSSEN WERDEN DATENBANK GEHT NUN :)

Edited by Kuxii
EDIT CAN CLOSE

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...