c# - 浮动变量没有保存到 playerprefs 我如何修复这个 Unity?
问题描述
所以我试图保存浮点变量cors.Destroyers每次我的玩家与硬币碰撞时我将它设为= 1然后我确保当我单击KEY S时它应该保存到我的播放器预制中但是当我重新启动时游戏由于某种原因它回到了 0我一直在尝试修复这个问题,但我仍然不确定为什么它根本没有保存,但是当我尝试使我的变量静态时它可以工作但我没有'不希望它是一个静态变量我希望它在没有静态变量的情况下工作以某种方式非常感谢任何帮助
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
using UnityEngine.UI;
using TMPro;
public class savegameprogress2 : MonoBehaviour
{
public COINS cors;
private void Start()
{
LoadGame();
//Debug.Log(COINS.gamecoin);
Debug.Log(cors.Destroyers);
}
void Update()
{
if (Input.GetKeyDown(KeyCode.S))
{
SaveGame();
}
}
public void SaveGame()
{
PlayerPrefs.SetFloat("mainmoney", COINS.gamecoin );
PlayerPrefs.SetFloat("destroy", cors.Destroyers);
PlayerPrefs.Save();
Debug.Log("Game data saved!");
}
void LoadGame()
{
if (PlayerPrefs.HasKey("SavedInteger"))
{
//save for scene 2
COINS.gamecoin = PlayerPrefs.GetFloat("mainmoney");
cors.Destroyers = PlayerPrefs.GetFloat("destroy");
}
else
Debug.LogError("There is no save data!");
}
解决方案
对代码进行以下调整:
- 在 start 方法中,使用 HasKey 方法检查播放器首选项中是否存在密钥。如果不存在,则分配 0 值。
- 在退出游戏之前,请确保将首选项保存到磁盘上。
代码:
void Start(){
if(!PlayerPrefs.HasKey("mainmoney")){
PlayerPrefs.SetFloat("mainmoney", 0);
}
if(!PlayerPrefs.HasKey("destroy")){
PlayerPrefs.SetFloat("destroy", 0);
}
}
void OnApplicationQuit(){
PlayerPrefs.Save;
}
推荐阅读
- java - 带前缀的 Java 递归 ABC 生成器
- python - 从瓶子模板中引用图像的方法是什么?
- c++ - 水平显示列表
- user-registration - 添加到 um 注册表单的字段未显示在数据库中
- objective-c - 理解十六进制逻辑
- android - WebView,链接到 Google 相册但 ERR_UNKNOWN_URL_SCHEME
- python - 运行 python pptx 代码后图像损坏
- phpmyadmin - phpmyadmin 左侧面板上不显示一张表
- android - 使用可缩放的选定卡片水平刷卡
- java - 在 geeksforgeeks 上解决矩阵问题中的路径有什么问题?