单击后如何将鼠标悬停在高亮按钮颜色上?

时间:2018-08-03 07:12:44

标签: user-interface unity3d uibutton

我正在做一个钢琴应用程序,认为该应用程序可以在移动设备(Android)上播放。所有钢琴键都是UI按钮,将“属性”按下的颜色变为灰色,以便正确指示何时钢琴键发出声音。
我当前的问题是,当我第一次单击某个键,然后将鼠标拖动到以下键上时,只有我单击的第一个键得到了颜色变化(这个想法是,当其他颜色变化时,颜色持续时间的变化会完成键开始发出声音,然后我通过鼠标手指的新键显示为灰色)。
我还尝试将“ higlighted color”属性设置为与按下的颜色相同的颜色,并且将“ Navigation”参数导航为none(如果将其设置为“ auto”,则会发生某种错误,即该颜色被“卡住”,直到我发出另一个按键声音为止),但结果还是一样。

编辑:
我用取得的一些进展更新了这个问题:
由于指针进入和退出事件(这两个事件都放置在每个按钮的事件触发器上),因此我试图通过脚本更改按下的颜色。
代码:

public class ChangeKeyColor : MonoBehaviour{

    public Button button;

    void Start()
    {

    }

    void Update()
    {

    }

    public void EnterKey () {
        Debug.Log("Enter the key");
        ColorBlock colors = button.colors;
        colors.normalColor = new Color(179, 179, 179, 255);
        //colors.highlightedColor = new Color32(179, 179, 179, 255);
        button.colors = colors;
    }

    public void ExitKey()
    {
        Debug.Log("Exits the key");
        ColorBlock colors = button.colors;
        colors.normalColor = Color.white;
        //colors.highlightedColor = new Color32(255, 255, 255, 255);
        //colors.pressedColor = Color.white;
        button.colors = colors;
    }

}

我获得的唯一改进是,当我拖动鼠标(维护它)时,第一个按钮恢复为白色,但是我认为这是发生的,因为现在我仅将按下的颜色选项设置为灰色...
有谁知道为什么我在脚本中进行的按下颜色更改没有发生?当我将鼠标拖动到另一个键时,是否不被视为按下按钮?

致谢!

2 个答案:

答案 0 :(得分:1)

我不确定您是否还在寻找答案,但是我终于有时间自己尝试一下。 我所做的是更改颜色和调试日志记录转换的名称,而不是播放声音。 我的图像/按钮代码(附加到每个图像上,我没有使用Button组件):

using UnityEngine;
using UnityEngine.UI;

public class ChangeColor : MonoBehaviour {

public Color activeColor, notActiveColor;
private Image thisImage;

void Awake () {
    thisImage = GetComponent<Image>();
}

public void OnPointerClick()
{
    Activate();
}

public void OnPointerEnterAndDown()
{
    if (Input.GetKey(KeyCode.Mouse0))
    {
        Activate();
    }
}

public void OnPointerExit()
{
    thisImage.color = notActiveColor;
}

private void Activate()
{
    Debug.Log(transform.name);
    thisImage.color = activeColor;
}
}

EventTrigger设置:

<code>Event trigger</code> Settings

这就是最后的样子:

enter image description here

答案 1 :(得分:0)

(这应该是评论,但是有点长,所以请回复我,我会更新答案)

我不知道您为什么会有这个问题,我进行了简单的测试,创建了2个UI按钮,并将突出显示的颜色设置为红色,而将按下的按钮设置为蓝色。

默认情况下(没有脚本附加到任何内容),行为如下:

1。如果按下(并保持)按钮的单击,则该按钮为蓝色,当我释放“压力”时,该按钮将保持红色。

2。虽然第一个按钮是红色的,但是如果我将鼠标拖到第二个按钮上,它也会是红色的。

3。如果现在我按下第二个按钮,则第一个行为将应用于第二个按钮,第一个将再次变为白色。

根据我的理解,这是您想要的以下行为。 因此,如果这不是您想要的行为,请告诉我们更多有关您想要的东西。