Почему я должен использовать библиотеку сообщений / сигналов / событий, прежде чем просто System.Action в c#? - PullRequest
0 голосов
/ 12 июля 2020

Я начал разрабатывать проекты с использованием Unity, использующего C#. Я нашел множество людей, рекомендующих использовать библиотеки, такие как https://github.com/yankooliveira/signals или http://wiki.unity3d.com/index.php/CSharpMessenger_Extended, для управления такими событиями, как изменение здоровья игрока, некоторые изменения валюты или что-то, что редко меняется в константе none скорость.

Концепция событий или сигналов действительно мощная, но почему бы просто не использовать System.Action в сочетании с ключевым словом event? какие преимущества предоставляют эти библиотеки?

public class SomeClass
{
    public static event Action OnSomethingChange;

    public void TriggerOnSOmethingChange()
    {
        OnSomethingChange?.Invoke();
    }

    public void SubscribeToOnSomethingChange()
    {
        OnSomethingChange += OnSomethingChangeHandler;
    }

    public void UnsubscribeToOnSomethingChange()
    {
        OnSomethingChange -= OnSomethingChangeHandler;
    }

    private void OnSomethingChangeHandler()
    {
        
    }
}

1 Ответ

1 голос
/ 12 июля 2020

Коротко

Эти библиотеки дают вам обобщение ваших событий, и вам не нужно писать свою собственную систему.

Немного больше информации

Когда вы используйте только события Action с ключом события, нужно помнить о параметрах, которые вы хотите передавать через события, потому что в этой библиотеке очень просто, единственное, что нужно - создать собственный класс с полями, но если использовать свои собственные Действия или одно действие с общие параметры, необходимые для использования бокса / распаковки или общих полей.

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