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

Unity中如何控制Button显隐及修复关卡跳转相关脚本报错问题

问题原因

  • 语法错误:ScriptToVisibleButton脚本的判断条件错误使用赋值运算符=而非比较运算符==,且直接将NextLevelTeleportScript类型的变量与int类型的1比较,类型不匹配,直接触发编译报错。
  • 逻辑顺序错误:NextLevelTeleportScript的OnTriggerEnter方法中先执行了SceneManager.LoadScene(1)加载新场景,再给LvlEnd赋值,加载场景后当前场景的所有对象都会被销毁,赋值操作永远不会生效。
  • 跨场景数据丢失:没有对NextLevelTeleportScript挂载的对象做跨场景保留处理,切换场景后该对象会被销毁,新场景的ScriptToVisibleButton无法拿到有效的LvlEnd值。

解决方案

步骤1:修正ScriptToVisibleButton脚本逻辑

无需在Update中每帧判断,仅场景加载时读取一次状态即可,节省性能:

using UnityEngine;
using UnityEngine.UI;

public class ScriptToVisibleButton : MonoBehaviour
{
    public Button button;
    void Start()
    {
        // 直接读取跨场景的静态状态值控制按钮显隐
        button.gameObject.SetActive(NextLevelTeleportScript.LvlEnd == 1);
    }
}

步骤2:修改NextLevelTeleportScript,支持跨场景状态传递

将LvlEnd改为静态字段,保证全局唯一、切换场景后数据不丢失,同时调整赋值和加载场景的顺序:

using UnityEngine;
using UnityEngine.SceneManagement;

public class NextLevelTeleportScript : MonoBehaviour
{
    // 静态字段全局唯一,跨场景不会被销毁重置
    public static int LvlEnd = 0;

    void OnTriggerEnter(Collider other)
    {
        // 先修改状态,再加载新场景
        LvlEnd = 1;
        SceneManager.LoadScene(1);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:24:02