Я работаю над Unity и изо всех сил стараюсь создать пользовательский SelectableButton, который хранит метод (ы) в двух разных делегатах и выполняет один при каждом нажатии кнопки, а другой при отмене выбора. Соответствующая часть выглядит так:
public delegate void OnSelectAction();
public delegate void OnDeselectAction();
public class SelectableButton : MonoBehaviour
{
private bool selected;
public OnSelectAction onSelect;
public OnDeselectAction onDeselect;
public bool Selected
{
get { return selected; }
set
{
selected = value;
if(selected)
onSelect();
else
onDeselect();
}
}
}
В другом скрипте я пытаюсь инкапсулировать метод в onSelect, а другой - в onDeselect.
for(int i = 0; i < racesData.RaceList.Count; i++)
{
selectableButton.onSelect = Select(racesData.RaceList[i]);
selectableButton.onDeselect = Deselect(racesData.RaceList[i]);
}
public void Select(Race race)
{
// Does its selection stuff
}
public void Deselect(Race race)
{
// Does its deselection stuff
}
В конце я получаюошибка, сообщающая, что я не могу "преобразовать void в OnSelectAction / OnDeselectAction". И если я попытаюсь написать это скорее так:
selectableButton.onSelect = () => Select(racesData.RaceList[i]);
selectableButton.onDeselect = () => Deselect(racesData.RaceList[i]);
Методы Select () и Deselect () не будут работать так, как они должны. Если бы кто-то мог помочь дать мне ту часть, которой мне не хватает, чтобы сделать эту работу, было бы неплохо, и я был бы благодарен за руку :))