Делегаты для целей OnSelect и OnDeselect - PullRequest
3 голосов
/ 11 декабря 2019

Я работаю над 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 () не будут работать так, как они должны. Если бы кто-то мог помочь дать мне ту часть, которой мне не хватает, чтобы сделать эту работу, было бы неплохо, и я был бы благодарен за руку :))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...