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

Unity如何跨脚本使用PlayerPrefs实现最高分达50时停用面板

问题原因

现有代码无法生效的核心问题:

  • 仅判断PlayerPrefs中是否存在最高分键,未实际读取分数值和50的阈值做比较,只要曾经存过任意分数都会触发面板停用逻辑
  • 用GetComponent<Score>()获取引用要求两个脚本必须挂载在同一个GameObject上,否则会返回空引用导致逻辑失效
  • 仅在OpenPanel1被手动调用时执行一次判断,游戏启动、分数动态增长的过程中不会自动校验状态
  • 未覆盖「当前实时分数达到50就停用面板」的需求,仅做了最高分相关判断

修改方案

直接替换PanelDeactivator脚本为以下代码:

using UnityEngine;

public class PanelDeactivator : MonoBehaviour
{
    [SerializeField] private GameObject _firePanel;
    [SerializeField] private GameObject _snowPanel;
    [SerializeField] private GameObject _transparentPanel;
    [SerializeField] private Score _scoreScript;
    [SerializeField] private int triggerScore = 50;

    private int cachedHighScore;

    void Start()
    {
        cachedHighScore = PlayerPrefs.GetInt("Highest Score: ", 0);
        UpdatePanelState();
    }

    void Update()
    {
        if (_scoreScript == null) return;
        cachedHighScore = PlayerPrefs.GetInt("Highest Score: ", 0);
        if (cachedHighScore >= triggerScore || _scoreScript._scoreNumber >= triggerScore)
        {
            UpdatePanelState();
        }
    }

    private void UpdatePanelState()
    {
        bool shouldDisable = cachedHighScore >= triggerScore || 
                            (_scoreScript != null && _scoreScript._scoreNumber >= triggerScore);
        if (!shouldDisable) return;
        
        _firePanel.SetActive(false);
        _snowPanel.SetActive(false);
        _transparentPanel.SetActive(false);
        // 触发后关闭脚本节省性能
        enabled = false;
    }

    public void OpenPanel1()
    {
        UpdatePanelState();
    }
}

配置说明

  • 在Inspector面板中将挂载了Score脚本的对象直接拖到_scoreScript字段,不要依赖自动获取组件,避免空引用
  • triggerScore字段默认值为50,可直接在Inspector中调整,无需修改代码
  • 若要降低性能开销,可删除Update中的检测逻辑,在Score脚本的OnTriggerEnter2D方法中更新完分数后,加一行FindObjectOfType<PanelDeactivator>()?.UpdatePanelState(),仅在分数变化时触发校验
  • 如需保证最高分写入不丢失,可在Score脚本的PlayerPrefs.SetInt方法后加PlayerPrefs.Save()强制立刻落盘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:06:31