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

Unity 3D中GUI按钮未点击却持续触发点击消息的问题

嘿,我一眼就揪出问题所在啦!

你代码里有个超隐蔽的小失误——GUI.Button(buttRect, buttonText)后面多了个分号!

咱们来理清楚逻辑:

  • 原本if(GUI.Button(...))是用来判断按钮是否被点击,只有点击时才会执行大括号里的打印代码
  • 但你在if条件的括号后面加了个分号,这就相当于给if语句加了一个空的执行块,后面的{ print("Butt clicked"); }直接变成了独立的代码段,不管按钮有没有被点击,每帧都会执行这个打印操作,所以控制台才会一直刷消息。

修正后的代码

把那个多余的分号删掉就搞定了,修改后的完整代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GUIScript : MonoBehaviour 
{
    string buttonText = "Ok!";

    private void OnGUI() 
    {
        GUI.skin.button.fontSize = 50;
        GUI.contentColor = Color.yellow;
        GUI.backgroundColor = Color.blue;

        var textsize3 = GUI.skin.button.CalcSize(new GUIContent(buttonText));
        Rect buttRect = new Rect(0, 600, textsize3.x, textsize3.y);

        if (GUI.Button(buttRect, buttonText)) 
        {
            print("Butt clicked");
        }
    }
}

额外小提醒

  • Unity的OnGUI方法是每帧都会调用的,所以写这里面的逻辑时要多加注意,避免不必要的重复执行
  • 另外,Unity 2017.3里的OnGUI属于比较老旧的UI系统啦,如果是新项目的话,更推荐用UGUI(Unity UI)来做界面,功能更丰富也更灵活~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:48