Jump to content
Unity Insider Forum

Android Path


Kojote

Recommended Posts

Grüße!

Habe gerade ein paar Probleme Daten in Android zu schreibe.

Im Awake befindet sich dieser Teil:

	if (Application.isMobilePlatform == true) {
            if (File.Exists("jar:file://" + Application.persistentDataPath + "/db/spielerdaten.dat")) {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                FileStream fileStream = File.Open("jar:file://" + Application.persistentDataPath + "/db/spielerdaten.dat", FileMode.Open);
                Spielderdaten data = (Spielderdaten)binaryFormatter.Deserialize(fileStream);

                einstellungZahlHilfe = data.einstellungZahlHilfe;
                einstellungZahlSprache = data.einstellungZahlSprache;
                einstellungZahlSpielzeit = data.einstellungZahlSpielzeit;
                einstellungZahlStatistik = data.einstellungZahlStatistik;
                einstellungZahlWachbleiben = data.einstellungZahlWachbleiben;
                einstellungZahlLinkshaenderModus = data.einstellungZahlLinkshaenderModus;
                einstellungZahlMusikProzentZahl = data.einstellungZahlMusikProzentZahl;
                einstellungZahlSFXProzentZahl = data.einstellungZahlSFXProzentZahl;
                einstellungZahlMusikTrackNummer = data.einstellungZahlMusikTrackNummer;
                fileStream.Close();
            } else {
                SpieleMenueSpeichern();
            }
        } else {
            if (File.Exists(Application.dataPath + "/spielerdaten.dat")) {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                FileStream fileStream = File.Open(Application.dataPath + "/spielerdaten.dat", FileMode.Open);
                Spielderdaten data = (Spielderdaten)binaryFormatter.Deserialize(fileStream);

                einstellungZahlHilfe = data.einstellungZahlHilfe;
                einstellungZahlSprache = data.einstellungZahlSprache;
                einstellungZahlSpielzeit = data.einstellungZahlSpielzeit;
                einstellungZahlStatistik = data.einstellungZahlStatistik;
                einstellungZahlWachbleiben = data.einstellungZahlWachbleiben;
                einstellungZahlLinkshaenderModus = data.einstellungZahlLinkshaenderModus;
                einstellungZahlMusikProzentZahl = data.einstellungZahlMusikProzentZahl;
                einstellungZahlSFXProzentZahl = data.einstellungZahlSFXProzentZahl;
                einstellungZahlMusikTrackNummer = data.einstellungZahlMusikTrackNummer;
                fileStream.Close();
            } else {
                SpieleMenueSpeichern();
            }
        }

Beim ersten Start, kann die Datei gar nicht vorhanden sein, also würde die Else-Klausel aufgrufen:

	private void MenueEinstellungenSpeichern() {
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        FileStream fileStream;
        if (Application.isMobilePlatform == true) {
            fileStream = File.Create("jar:file://" + Application.persistentDataPath + "!/assets/" + "/db/spielerdaten.dat");
        } else {
            fileStream = File.Create(Application.dataPath + "/spielerdaten.dat");
        }
        Spielderdaten data = new Spielderdaten();

        data.einstellungZahlHilfe = einstellungZahlHilfe;
        data.einstellungZahlSprache = einstellungZahlSprache;
        data.einstellungZahlSpielzeit = einstellungZahlSpielzeit;
        data.einstellungZahlStatistik = einstellungZahlStatistik;
        data.einstellungZahlWachbleiben = einstellungZahlWachbleiben;
        data.einstellungZahlLinkshaenderModus = einstellungZahlLinkshaenderModus;
        data.einstellungZahlMusikProzentZahl = einstellungZahlMusikProzentZahl;
        data.einstellungZahlSFXProzentZahl = einstellungZahlSFXProzentZahl;
        data.einstellungZahlMusikTrackNummer = einstellungZahlMusikTrackNummer;

        binaryFormatter.Serialize(fileStream, data);
        fileStream.Close();
    }

Wie ihr seht, frage ich ab, ob es sich um ein Android System handelt oder ob es sich um ein normales Windows System handelt. In Windows funktioniert nach dem Compilieren alles ohne Problem. Die Dateien werden angelegt und aus ihnen kann auch gelsen werden.

Anders siehts jedoch in Android aus, hier wird aus irgend einem Grund die Datei nicht erstellt.

Ich habe mich hier ans Manual gehalten: https://docs.unity3d.com/Manual/StreamingAssets.html

Sehr ihr den Fehler oder könnt mir weiter helfen?

Vielen Dank und Grüße von Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

Fehler gefunden:

FileStream fileStream = File.Open("jar:file://" + Application.persistentDataPath + "/db/spielerdaten.dat", FileMode.Open);

Richtig müsste es heißen:

FileStream fileStream = File.Open(Application.persistentDataPath + "/spielerdaten.dat", FileMode.Open);

Da war ein Ordner nicht vorhanden. Kleiner Fehler, große Wirkung!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

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

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

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

Lädt...
×
×
  • Neu erstellen...