C# 如何使用gui按钮来启用禁用方法中的代码并同时更改按钮文本?

C# 如何使用gui按钮来启用禁用方法中的代码并同时更改按钮文本?,c#,unity3d,C#,Unity3d,但是按下按钮没有任何作用。以下代码(在CustomHierarchy()中)只调用一次(一旦自定义继承人权限初始化): 本质上是EditorApplication.hierarchyWindowItemOnGUI是一个事件处理程序,当您添加函数时,您有效地告诉应用程序在每次触发事件时运行HandleHierarchyWindowItemOnGUI()您只执行一次,因此尝试检查onoff是否为true将不会起任何作用,因为函数(HandleHierarchyWindowItemOnGUI())已附

但是按下按钮没有任何作用。

以下代码(在
CustomHierarchy()
中)只调用一次(一旦自定义继承人权限初始化):

本质上是
EditorApplication.hierarchyWindowItemOnGUI
是一个事件处理程序,当您添加函数时,您有效地告诉应用程序在每次触发事件时运行
HandleHierarchyWindowItemOnGUI()
您只执行一次,因此尝试检查
onoff
是否为true将不会起任何作用,因为函数(
HandleHierarchyWindowItemOnGUI()
)已附加到事件处理程序

if(onoff)
语句放在实际的
HandleHierarchyWindowItemOnGUI()函数中:

    if (onoff == true)
    {
        EditorApplication.hierarchyWindowItemOnGUI += HandleHierarchyWindowItemOnGUI;
    }
因此,它实际上不会使用您想要执行的代码。

以下代码(在
CustomHierarchy()
中)只调用一次(一旦自定义继承人权限初始化):

本质上是
EditorApplication.hierarchyWindowItemOnGUI
是一个事件处理程序,当您添加函数时,您有效地告诉应用程序在每次触发事件时运行
HandleHierarchyWindowItemOnGUI()
您只执行一次,因此尝试检查
onoff
是否为true将不会起任何作用,因为函数(
HandleHierarchyWindowItemOnGUI()
)已附加到事件处理程序

if(onoff)
语句放在实际的
HandleHierarchyWindowItemOnGUI()函数中:

    if (onoff == true)
    {
        EditorApplication.hierarchyWindowItemOnGUI += HandleHierarchyWindowItemOnGUI;
    }

因此,它实际上不会使用您想要执行的代码。

仍然不工作,该按钮不会执行任何操作。其思想是打开/关闭CustomHierarchy。它为层次结构中的对象上色,例如,如果层次结构中的对象附加了boxcollder组件,则将层次结构中的游戏对象上色为黄色。但是我希望该按钮可以打开/关闭CustomHierarchy的使用。“但是它不起作用了。”丹尼利普:你能给我一些正在发生的事情的图像吗。您要求停止代码,它应该可以工作。放置一个Print()函数,检查按下按钮时代码是否仍在运行。抱歉,我不清楚。我想做的是制作一个类似切换开关的按钮,或者以某种方式使用gui切换来启用/禁用CustomHierarchy。最好禁用/启用整个CustomHierarchy脚本。但这正是我想做的,只是解释得不够好。@DanielLip它像一个关闭按钮吗?只需调用window.Close()。您不能切换整个静态脚本(据我所知)。此外,我不知道为什么停止draw调用不会停止渲染窗口,直到按钮不起作用为止。其思想是打开/关闭CustomHierarchy。它为层次结构中的对象上色,例如,如果层次结构中的对象附加了boxcollder组件,则将层次结构中的游戏对象上色为黄色。但是我希望该按钮可以打开/关闭CustomHierarchy的使用。“但是它不起作用了。”丹尼利普:你能给我一些正在发生的事情的图像吗。您要求停止代码,它应该可以工作。放置一个Print()函数,检查按下按钮时代码是否仍在运行。抱歉,我不清楚。我想做的是制作一个类似切换开关的按钮,或者以某种方式使用gui切换来启用/禁用CustomHierarchy。最好禁用/启用整个CustomHierarchy脚本。但这正是我想做的,只是解释得不够好。@DanielLip它像一个关闭按钮吗?只需调用window.Close()。您不能切换整个静态脚本(据我所知)。我也不知道为什么停止draw调用并不能停止渲染窗口
static CustomHierarchy()
    {
        if (onoff == true)
        {
            EditorApplication.hierarchyWindowItemOnGUI += HandleHierarchyWindowItemOnGUI;
        }
    }
    if (onoff == true)
    {
        EditorApplication.hierarchyWindowItemOnGUI += HandleHierarchyWindowItemOnGUI;
    }
private static void HandleHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
{
    if(onoff){
        ... //Do the stuff you had in this function
    }
}