在Unity 5.2中的滚动视图中更改按钮精灵

时间:2016-01-20 16:45:08

标签: c# user-interface button unity3d

我有一个滚动视图,上面有很多按钮。当我按下一个按钮时,该按钮需要更改精灵并保持这样状态。如果按下任何其他按钮(或同一个按钮),则前一个按钮需要恢复为原始精灵。 这是一些例子

enter image description here

按钮2被按下并更改了精灵,它保持不变,直到再次按下或按下任何其他(在这种情况下按钮3)

1 个答案:

答案 0 :(得分:0)

这是一个可能解决方案的草案。为"按钮组创建一个管理器脚本"并在scrollview上附加脚本

public class ButtonsGroupController : MonoBehaviour
{
    // List of all children buttons 
    private readonly List<Button> _buttons;

    // Last pressed button index
    private int _lastId = -1;

    void Start(){

        // Look for all buttons (children of this GO - scrollview)
        _buttons = GetComponentsInChildren<Button>();

        // Add event listener for buttons
        for(var i = 0; i < _buttons.Count; i++){
            var index = i;
            _buttons[index].onClick.AddListener(() => ButtonPressed(index));
        }

    }

    // Resolve buttons press event
    private void ButtonPressed(int index){
        // The same button has been pressed
        if(_lastId == index)
            return;

        // Update the last selected button sprite - to normal state
        // _buttons[_lastId]....

        // Update the last id
        _lastId = index;

        // Update the sprite of newly pressed button
        // _buttons[_lastId]....
    }
}