PlayerPrefs będzie działać na różnych platformach, ale nie jest to zalecane do zapisywania plików postępów gry, ponieważ jest niepewny. Jako plik w postaci zwykłego tekstu gracz może go łatwo otworzyć i zmienić zawartość w celu oszukiwania lub sprawić, że gra zachowuje się nieprzewidywalnie. Nie ma też gwarancji pozostania w pobliżu.
PlayerPrefs jest przeznaczony do nieistotnych informacji o preferencjach, takich jak mapowanie kontrolne lub ustawienia muzyki / sfx - rzeczy, które odtwarzacz może i tak dowolnie zmieniać, i nie przegapiłby strasznie, gdyby (na przykład w systemie Windows) użył punktu przywracania systemu i stracił niektóre informacje o rejestrze. Gdyby to straciło swoje wysokie wyniki lub postępy kampanii, gracze byliby słusznie zdenerwowani!
Zamiast tego zaleca się zapisywanie postępów gry we własnym pliku (zwykle binarnym, być może zaszyfrowanym lub podpisanym, jeśli chcesz utrudnić modyfikację, ale patrz komentarz Filipa na ten temat poniżej).
Możesz użyć Application.persistentDataPath, aby uzyskać niezawodną lokalizację zapisu na każdej platformie. Zazwyczaj znajduje się w folderze danych użytkownika, który nie zostanie usunięty w przypadkach takich jak w powyższym przykładzie.
Gdy masz już ścieżkę do zapisywania, możesz użyć zwykłych metod C # IO do tworzenia, pisania i odczytywania pliku. Szczegóły będą się bardzo różnić w zależności od formatu i struktury zapisywanego pliku, więc jeśli napotkasz problemy, najlepiej zadać nowe pytanie szczegółowo, co próbujesz zrobić i gdzie utkniesz.
Na stronie Unity znajduje się wideo, które omawia dwie główne opcje zapisywania (PlayerPrefs i tworzenie własnego pliku zapisu). Wideo można znaleźć tutaj: http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/persistence-data-saving-loading?playlist=17117
źródło
PlayerPrefs to sklep K / V zaprojektowany tak, aby „po prostu działał” bez względu na platformę, którą budujesz. Mówię tylko, że używaj go, chyba że masz ważny powód, aby tego nie robić.
źródło
Więc najlepszym sposobem jest oszczędzanie po stronie serwera? Konwertuj wszystkie zapisane potrzebne informacje na ciąg json i przechowuj je na własnym serwerze mysql jako dane ciągu, a kiedy trzeba załadować, połączyć się z serwerem i przywrócić?
źródło