Jump to content
Unity Insider Forum

Playerprefs mit Int funktioniert nicht


Tom12

Recommended Posts

Ich bekomme immer den Fehler, dass er CoinsPerSecond() im aktuellen Kontext nicht kennt. Bitte um Hilfe 

Void Start(){

CoinsPerSecond() = PlayerPrefs.GetInt("SC");
cpsDisplay.text = PlayerPrefs.GetInt("SC").ToString();

}

void Update(){
        cpsDisplay.text = CoinPerSecond() + " Points/sec";
        PlayerPrefs.SetInt("SC", CoinPerSecond());
    }
    public int CoinPerSecond(){
        int tick = 0;
        foreach (ItemScript item in items){
            tick += item.count * item.tick;
        }
        return tick;
    }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auf der linken Seite einer Zusweisung kann nur eine Variable (oder Property) stehen. Ein Methodenaufruf dagegen ist an dieser stelle niemals zulässig. Überlege mal: Wo soll denn der Wert auf der rechten Seite gespeichert werden?

Was genau soll denn da eigentlich passieren? Du speicherst den CoinsPerSecond-Wert ab, und dabei geht die offenbar wichtige Information verloren, wie sich dieser Wert zusammensetzt. Beim Laden versuchst du dann, einen einzelnen int-Wert dahin zu schmeißen, wo eigentlich eine etwas komplexere Berechnung mit Items stattfinden soll. Das haut irgendwie alles nicht hin.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Sascha:

Auf der linken Seite einer Zusweisung kann nur eine Variable (oder Property) stehen. Ein Methodenaufruf dagegen ist an dieser stelle niemals zulässig. Überlege mal: Wo soll denn der Wert auf der rechten Seite gespeichert werden?

Was genau soll denn da eigentlich passieren? Du speicherst den CoinsPerSecond-Wert ab, und dabei geht die offenbar wichtige Information verloren, wie sich dieser Wert zusammensetzt. Beim Laden versuchst du dann, einen einzelnen int-Wert dahin zu schmeißen, wo eigentlich eine etwas komplexere Berechnung mit Items stattfinden soll. Das haut irgendwie alles nicht hin.

in CoinPerSecond is halt tick und Count wichtig dass es erneut errechnet werden kann wenn ich allerdings tick abspeicher kennt er es wieder nicht da es ja wieder nur eine Variable aufnehmen kann 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Richtig. Alles andere ergibt aber auch keinen Sinn. Dein tick-Wert wird ständig von deinen Items berechnet. Wenn du den tick-Wert dann abspeicherst, aber nicht deine Items, wie soll das Spiel nach dem Laden mit die ticks berechnen?

Du hast also zwei Möglichkeiten. Du musst entweder die Items für die Berechnung irrelevant machen und einfach mit einer tick- bzw. coinsPerSecond-Vairable arbeiten. Wenn ein neues Item hinzukommt wird dessen Wert auf diese Variable draufgerechnet. Dafür berechnest du die coins per second nicht alle Nase lang neu.

Das ist in meinen Augen eine sinnvolle Methode, weil du aktuell viele Male pro Sekunde mit CoinsPerSecond() immer denselben Wert ausrechnest, anstatt ihn einfach auszurechnen und durchgehend zu benutzen.

Die andere Variante wäre, deine ganzen Items abzuspeichern, anstatt einfach nur den einen int-Wert. Auch das ist vermutlich sinnvoll, da du ja offenbar verschiedene Items hast, die etwas bewirken, und im Moment sind sie nicht Teil deines Spielstandes. Sobald man das Spiel speichert, schließt und wieder lädt, ist die Info, welche Items man hat, einfach weg. Das willst du so vermutlich nicht behalten.

Da beides Sinn ergibt, willst du vermutlich eine Kombination aus beidem bauen.

Was in jedem Fall nicht geht ist, die Zahl ständig aus der Itemliste zu errechnen, die Itemliste aber nicht abzuspeichern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...