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

Unity自定义编辑器按钮点击等事件持续触发问题求助

Unity自定义编辑器按钮自动触发问题修复

问题描述

制作Unity自定义编辑器时,设置了三个用于修改脚本属性的按钮,但出现异常:无需任何操作,按钮的点击事件就会持续触发,Debug日志循环打印,鼠标悬停窗口时也会触发。

错误原因

核心问题是按钮判断的if语句后错误添加了分号,并且GUILayout.Width(100)的调用位置错误:

  • if语句后的分号会让条件判断变成一个空语句,后面的花括号代码块会在OnInspectorGUI的每一次刷新(编辑器窗口每帧都会执行)时无条件执行,导致按钮逻辑被持续触发。
  • GUILayout.Width(100)需要作为GUILayout.Button的参数传入,而不是单独写在if语句后。

修复后的完整代码

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Modify))]
[CanEditMultipleObjects]
public class CloudsEditor : Editor
{
    SerializedProperty powerSetting;
    string powerSettingText;

    private void OnEnable()
    {
        powerSetting = serializedObject.FindProperty("CloudsOnePowerSetting");
    }

    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        serializedObject.Update();
        
        GUILayout.BeginHorizontal();
        GUILayout.Label("Set Clouds Fade");
        
        // 修正:将GUILayout.Width作为Button参数传入,移除if后的分号
        if (GUILayout.Button("Fast", GUILayout.Width(100)))
        {
            powerSetting.floatValue = 0.001f;
            powerSettingText = "0.001f";
            Debug.Log("Test1");
        }
        if (GUILayout.Button("Medium", GUILayout.Width(100)))
        {
            powerSetting.floatValue = 0.0001f;
            powerSettingText = "0.0001f";
            Debug.Log("Test2");
        }
        if (GUILayout.Button("Slow", GUILayout.Width(100)))
        {
            powerSetting.floatValue = 0.00001f;
            powerSettingText = "0.00001f";
            Debug.Log("Test3");
        }
        
        GUILayout.EndHorizontal(); 
        GUILayout.TextField(powerSettingText);

        serializedObject.ApplyModifiedProperties();
    }
}

额外优化说明

  • 移除了不必要的Modify myScript = (Modify)target;,使用SerializedProperty本身就支持多对象编辑,更符合Unity编辑器开发的最佳实践。
  • 给Slow按钮补充了powerSettingText的赋值,确保文本框能同步显示当前选中的速度等级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:45:27