You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity游戏中如何实现收集物数值累加与持久化保存?

问题分析与修复方案

你的脚本存在几个关键问题,导致分数无法正确保存和累加:

  • Start方法逻辑顺序混乱:读取存档后未先同步到GameController.score就更新UI,显示的仍是旧值;且判断存档键存在后重复赋值UI,逻辑冗余。
  • Update方法滥用:每帧都让totalScoreSave自增,完全违背"收集物体时累加分数"的需求,会导致分数无意义疯涨,和实际收集行为脱节。
  • 缺少存档持久化操作:仅设置PlayerPrefs键值但未调用Save(),数据可能未写入磁盘,重启后丢失。
  • 未处理首次启动场景:第一次游戏时未给GameController.score设置初始值,可能出现异常。

修正后的代码

首先确保GameController.score是静态变量(否则跨脚本访问会出错),然后修改CoinsManager脚本如下:

using UnityEngine;
using UnityEngine.UI;

public class CoinsManager : MonoBehaviour
{
    public Text yellowSquareText; // 直接引用Text组件,避免每帧调用GetComponent的性能开销
    private int totalScore;

    void Start()
    {
        // 初始化:读取存档分数,无存档则设为0
        totalScore = PlayerPrefs.GetInt("TotalScore", 0);
        // 同步分数到GameController并更新UI
        GameController.score = totalScore;
        UpdateScoreUI();
    }

    // 收集物体时调用此方法累加分数,比如在收集触发脚本中调用
    public void AddScore(int amount)
    {
        totalScore += amount;
        GameController.score = totalScore;
        UpdateScoreUI();
        // 保存分数到本地并写入磁盘
        PlayerPrefs.SetInt("TotalScore", totalScore);
        PlayerPrefs.Save();
    }

    // 单独封装UI更新逻辑,避免重复代码
    private void UpdateScoreUI()
    {
        yellowSquareText.text = totalScore.ToString();
    }
}

使用说明

  1. 在Unity编辑器中,将UI的Text组件直接拖到CoinsManager的yellowSquareText字段上,无需每帧调用GetComponent。
  2. 在收集物体的脚本中调用AddScore方法触发分数累加,示例:
    // 收集物体的触发脚本
    public class Collectible : MonoBehaviour
    {
        public CoinsManager coinsManager;
    
        void OnTriggerEnter(Collider other)
        {
            if(other.CompareTag("Player"))
            {
                coinsManager.AddScore(1); // 每次收集加1,可按需修改数值
                Destroy(gameObject);
            }
        }
    }
    
  3. 确保GameController中的score为静态变量:
    public class GameController : MonoBehaviour
    {
        public static int score;
        // 其他游戏逻辑...
    }
    

修改后,每次收集物体都会正确累加分数并持久化保存,重启游戏时会读取上次的总分继续累加。

内容的提问来源于stack exchange,提问作者NIK 444

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:10:28