GUI.Button如何使用代码激活悬停效果?

时间:2015-07-27 04:14:00

标签: c# user-interface unity3d

我在我的菜单上工作,这里有一些玩家可以选择的类(表示为GUI按钮)。我已经在悬停时突出显示它们,并且在选择类时它也会注册。

我不知道如何解决的问题是,我希望所选课程在点击后保持“悬停”,以便它仍然突出显示,并且玩家知道他已经选择了该课程。

if (GUI.Button (new Rect (Screen.width / 2 - 625, 500, 200, 30), "The Cunning", buttonStyle)) 
{
    classValgt = "1";

    // Some code here that makes the button appear as if hovered with the effects I added via my GUI style
}

2 个答案:

答案 0 :(得分:0)

您只能使用具有GUI外观或GUI样式的悬停效果,请阅读以下文档。

http://docs.unity3d.com/Manual/class-GUIStyle.html

http://docs.unity3d.com/Manual/class-GUISkin.html

在项目面板中在Unity中创建并选择GUISkin,并在脚本中将公共GUIStyle类型设置为Variable,并在其上传递GUISkin,代码如下面的示例所示: -

 public class ExampleClass : MonoBehaviour 
    {
        public GUIStyle style;
        void OnGUI() 
        {
            GUI.skin.label = style;
            GUILayout.Label("This is a label.");
            Debug.Log("" + GUI.skin.button.hover.textColor);

        }
    }

答案 1 :(得分:0)

我会通过使用两个GUIStyles和一个bool"选择"来解决这个问题。为您的按钮代表的每个对象。在绘制按钮之前测试bool的状态,并将正确的样式(选中/未选中)传递给它。

如果您可以使用GUI.Toggle而不是按钮(您可以将样式更改为类似简单按钮而不是切换),那就更好了。它更优雅,因为它自动控制选定/未选择状态并仅使用一种样式(保持状态为未选择状态和OnHold状态为选定状态。)