统一突出显示网格布局中的选定单元格

Highlighting the selected cell in grid layout in unity

我正在使用面板作为网格布局,其中的按钮预制件 out.I 可以为按钮附加事件,但我无法弄清楚如何在用户时突出显示该按钮单击该按钮 button.Is 有什么方法可以在用户单击该按钮时更改该克隆按钮的背景颜色?

您可以使用 onClick 在单击按钮时调用方法。

 public Button btn; 
    void Start () {
        btn.onClick.AddListener(ChangeColor);
    }

或者直接使用编辑器,OnClick列表,注意这个,你要调用的方法应该是public

如果你只想突出显示当前单击的按钮,当用户单击另一个按钮时,另一个按钮会突出显示,并且此按钮会恢复其正常颜色,那么这个选项在编辑器中是简单可行的,只需在编辑器中设置按钮的高亮颜色

但是如果你希望按钮在你点击它们之后改变它们的颜色并且这种改变是永久性的那么

您只需更改按钮 image 属性 的颜色,方法是访问其图像 属性 并将其颜色设置为您想要的颜色。

void changeColor(){
pButton.GetComponent<Image>().color = yourColor;
}

如果您不需要更改按钮中使用的图像的颜色,但又想更改按钮 normalcolor,请先保留以前的颜色,然后将新颜色设置为normalcolor

我也觉得如果你想用这个方法最好把highlightedColor也改一下,因为按下按钮后,它变成按下颜色一秒钟后,它会进入highlighted 状态直到你点击另一个按钮,所以我想如果你改变两种颜色会更好

public void ChangeColor()
{
    ColorBlock colorBlock = btn.colors;
    colorBlock.normalColor = Color.blue;
    colorBlock.highlightedColor = Color.blue;
    btn.colors = colorBlock;
}