【f1 23】win11下f1 23进入游戏提示载入失败/不存档继续解决方法

win11下f1 23进入游戏提示载入失败/不存档继续

【问题描述】

steam版本f1 23,下载完成后首次进入游戏,在载入界面按键继续后,提示”载入失败“(load failed),只能点击”不存档继续“(continue without saving),进入游戏后也无法打开自动存档。
玩是可以玩,但是每次进入都需要重新设置各种设定,令人头大。
图片来自贴吧

常规情况

首先检查用户名中是否含有中文
打开 文件资源管理器,点击左侧文档,在上方路径栏中检查路径是否为全英文。
文档所在路径需要为英文
如果该路径中包含中文可以尝试以下两种方法:

1.在windows下新建一个全英文名用户,然后切换至该账号,打开游戏查看能否存档;

2.将当前用户的名字改成英文,注意还需要修改注册表值;

以上两种方法网上都有具体教程,可以自行查找,这里就不赘述了。

用户为英文名但仍然不能存档的情况

很不幸我碰到的是第二种情况,找了国内论坛各种地方都没有找到解决方案,只好去看看同是英文用户名的老外有没有碰到过类似情况。
在EA Answer上的问答中,尝试了一些解决方案,最终找到了如下解决方法:

在右下系统任务栏点击OneDrive图标,打开设置页面
在这里插入图片描述

在【设置】页面中点击【账户】–>【选择文件夹】
在这里插入图片描述

在选择文件夹页面取消除个人保管库外的其他选项勾选,然后点击【确定】
在这里插入图片描述

之后退出OneDrive,并进入F1 23
在这里插入图片描述
终于可以正常游玩啦

using System.IO; using UnityEngine; public class SaveSystem : MonoBehaviour { public static SaveSystem Instance { get; private set; } public GameData currentData { get; private set; } private string savePath; private void Awake() { if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); Initialize(); } else { Destroy(gameObject); } } private void Initialize() { savePath = Path.Combine(Application.persistentDataPath, "savedata.json"); LoadGame(); } // 保存游戏 public void SaveGame(Vector3 playerPosition) { currentData.playerPosition = playerPosition; currentData.currentScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; currentData.saveTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm"); string jsonData = JsonUtility.ToJson(currentData); File.WriteAllText(savePath, jsonData); Debug.Log($"游戏保存: {savePath}"); } // 加载游戏 public void LoadGame() { if (File.Exists(savePath)) { string jsonData = File.ReadAllText(savePath); currentData = JsonUtility.FromJson<GameData>(jsonData); } else { currentData = new GameData(); } } // 删除存档 public void DeleteSave() { if (File.Exists(savePath)) { File.Delete(savePath); currentData = new GameData(); } } // 检查存档是否存在 public bool SaveExists() { return File.Exists(savePath); } } using TMPro; using UnityEngine; using UnityEngine.UI; public class NPC2 : MonoBehaviour { public GameObject image; public GameObject image1; public GameObject image2; public TextMeshProUGUI text; [Header("按钮设置")] public Button mainMenuButton; public Button startButton; public Button loseButton; public Button winButton; void Start() { // 将按钮引用传递给DialogueManager if (DialogueManager.Instance != null) { DialogueManager.Instance.startButton = startButton; DialogueManager.Instance.loseButton = loseButton; DialogueManager.Instance.winButton = winButton; } // 初始化时隐藏所有按钮 if (mainMenuButton != null) mainMenuButton.gameObject.SetActive(false); if (startButton != null) startButton.gameObject.SetActive(false); if (loseButton != null) loseButton.gameObject.SetActive(false); if (winButton != null) winButton.gameObject.SetActive(false); } void OnTriggerStay2D(Collider2D other) { if (other.CompareTag("Player") && Input.GetKeyDown(KeyCode.F)) { image.SetActive(true); image1.SetActive(true); image2.SetActive(true); text.gameObject.SetActive(true); DialogueManager.Instance.StartStateDialogue(); switch (DialogueManager.Instance.currentState) { case DialogueManager.DialogueState.Before: startButton.gameObject.SetActive(true); break; case DialogueManager.DialogueState.Win: winButton.gameObject.SetActive(true); break; case DialogueManager.DialogueState.Lost: loseButton.gameObject.SetActive(true); break; } } } }using System.Collections; using UnityEngine; using UnityEngine.UI; using TMPro; using UnityEngine.SceneManagement; public class BattleSystem : MonoBehaviour { public enum BattleState { Start, PlayerTurn, EnemyTurn, Win, Lose } public BattleState state; // 角色引用 public GameObject playerPrefab; public GameObject enemyPrefab; public Transform playerBattleStation; public Transform enemyBattleStation; private Playermessage playerUnit; private Enemymessage enemyUnit; // UI组件 public PlayerBattleHUD playerHUD; public EnemyBattleHUD enemyHUD; public TMP_Text dialogueText; // 战斗效果 public Image attackphoto; public Image attackphoto2; public Image image; public Animator animator; public Camera mainCamera; public Image image1; // 颜色变量 private Color Originalcolor; // 战斗开始 void Start() { state = BattleState.Start; StartCoroutine(SetupBattle()); } // 初始化战斗 IEnumerator SetupBattle() { // 实例化角色 GameObject playerGO = Instantiate(playerPrefab, playerBattleStation); playerUnit = playerGO.GetComponent<Playermessage>(); GameObject enemyGO = Instantiate(enemyPrefab, enemyBattleStation); enemyUnit = enemyGO.GetComponent<Enemymessage>(); // 设置HUD playerHUD.SetHUD(playerUnit); enemyHUD.SetHUD(enemyUnit); // 开场对话 yield return StartCoroutine(TypeText($"Let me feel your power now, don't make me bored^_^", 0.05f)); yield return new WaitForSeconds(0.5f); image1.gameObject.SetActive(false); // 省略部分对话... yield return StartCoroutine(TypeText("--Please consider your decision--", 0.05f)); yield return new WaitForSeconds(0.5f); state = BattleState.PlayerTurn; PlayerTurn(); } // 玩家回合 private void PlayerTurn() { StartCoroutine(TypeText("Choose your action...", 0f)); } // 玩家攻击 public void OnAttackButton() { if (state != BattleState.PlayerTurn) return; StartCoroutine(PlayerAttack()); } // 玩家攻击协程 private IEnumerator PlayerAttack() { yield return StartCoroutine(TypeText("Get out of my way!!!", 0f)); yield return new WaitForSeconds(1f); // 显示攻击特效 attackphoto.gameObject.SetActive(true); yield return new WaitForSeconds(0.2f); // 计算伤害 float damageDealt = playerUnit.CalculateDamage(); // 显示伤害文本 yield return StartCoroutine(TypeText($"Dealt {damageDealt:F1} damage!", 0f)); yield return new WaitForSeconds(1f); // 隐藏攻击特效 attackphoto.gameObject.SetActive(false); // 敌人承受伤害 bool isDead = enemyUnit.TakeDamage(damageDealt); enemyHUD.SetHP(enemyUnit.CurrentHealth); if (isDead) { state = BattleState.Win; StartCoroutine(EndBattle()); } else { state = BattleState.EnemyTurn; StartCoroutine(EnemyTurn()); } } // 敌人回合 private IEnumerator EnemyTurn() { yield return StartCoroutine(TypeText("Looking my eyes...", 0f)); yield return new WaitForSeconds(0.5f); // 显示攻击特效 attackphoto2.gameObject.SetActive(true); yield return new WaitForSeconds(0.2f); // 屏幕震动效果 animator.SetTrigger("shake"); StartCoroutine(ShakeCamera(0.4f, 0.4f)); // 闪光效果 Originalcolor = image.color; StartCoroutine(FlashBoom()); // 计算伤害 float damageDealt = enemyUnit.CalculateDamage(); yield return StartCoroutine(TypeText($"Took {damageDealt:F1} damage!", 0f)); // 隐藏攻击特效 attackphoto2.gameObject.SetActive(false); yield return new WaitForSeconds(0.5f); // 玩家承受伤害 bool isDead = playerUnit.TakeDamage(damageDealt); playerHUD.SetHP(playerUnit.CurrentHealth); yield return new WaitForSeconds(1f); if (isDead) { state = BattleState.Lose; StartCoroutine(EndBattle()); } else { state = BattleState.PlayerTurn; PlayerTurn(); } } // 结束战斗 private IEnumerator EndBattle() { if (state == BattleState.Win) { yield return StartCoroutine(TypeText("Victory is mine!", 0f)); // 保存胜利结果 PlayerPrefs.SetInt("LastBattleResult", 1); } else if (state == BattleState.Lose) { yield return StartCoroutine(TypeText("Defeat... I'll be back!", 0f)); // 保存失败结果 PlayerPrefs.SetInt("LastBattleResult", 0); } // 添加场景切换 SceneManager.LoadScene("Traning"); } // 文本显示效果 IEnumerator TypeText(string text, float delay) { dialogueText.text = ""; foreach (char letter in text.ToCharArray()) { dialogueText.text += letter; yield return new WaitForSeconds(delay); } } // 相机震动效果 IEnumerator ShakeCamera(float duration, float magnitude) { Vector3 originalPos = mainCamera.transform.localPosition; float elapsed = 0f; while (elapsed < duration) { float x = Random.Range(-1f, 1f) * magnitude; float y = Random.Range(-1f, 1f) * magnitude; mainCamera.transform.localPosition = new Vector3(x, y, originalPos.z); elapsed += Time.deltaTime; yield return null; } mainCamera.transform.localPosition = originalPos; } // 闪光效果 IEnumerator FlashBoom() { image.color = Color.white; yield return new WaitForSeconds(0.1f); image.color = Originalcolor; } } 我给你提供三个脚本,我希望更改以上任何代码,来对当前状态进行一个存储功能的实现
08-08
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值