我有一个滚动视图,上面有很多按钮。当我按下一个按钮时,该按钮需要更改精灵并保持这样状态。如果按下任何其他按钮(或同一个按钮),则前一个按钮需要恢复为原始精灵。 这是一些例子
按钮2被按下并更改了精灵,它保持不变,直到再次按下或按下任何其他(在这种情况下按钮3)
答案 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]....
}
}