Вот у вас есть кнопка, которая реагирует на клик. Как она реагирует? Вызывает новое окно, где есть список смайлов. Как вызывает? Очевидно, через вызов какого-то метода, например,
OpenSmileMenu()
. Так вот, пускай этот метод имеет параметр
Action<Sprite>
. Что должно передаваться? Ссылка на метод класса кнопки по которому кликнули, который принимает в себя спрайт и этот спрайт уже применяет к изображению кнопки.
private void UpdateSprite(Sprite sprite){
spriteRenderer.sprite = sprite;
}
Что происходит в
OpenSmileMenu(Action<Sprite> callback)
? В нём мы этот колбек прибавляем к событию:
SmileChoosed += callback;
Далее. Что происходит при нажатие на смайл? Очевидно, вызывается обработчик клика. Что он делает?
private void OnClick(Button button){
callback?.Invoke(button.GetComponent<SpriteRenderer>().sprite);
CloseSpriteMenu();
}