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
}
}