Доступ к переменной между несколькими скриптами для слабой связи в Unity3D - PullRequest
0 голосов
/ 09 октября 2018

Например, предположим, что у нас есть переменная здоровья в одном скрипте, и мы хотим получить доступ к этой переменной в скрипте пользовательского интерфейса для отображения здоровья, а с другой стороны, изменить высоту звука в соответствии с количеством здоровья.Я знаю несколько способов доступа к этой переменной, но они сильно зависят друг от друга.Как GetComponent, Singelton или даже C # событие.Я хочу знать, есть ли шаблоны, чтобы уменьшить эти зависимости?(Также эффективный и производительный)

Редактировать: Эта система событий у меня в голове, но я думаю, что у нее есть некоторые зависимости, которые они могут быть удалены, но я не знаю как, а также я не уверен в этом иего производительность.

public class Player {
    public class HealthEventArgs : EventArgs {
        public int currentHealth;
        public HealthChangedEventArgs(int currentHealth) {
            this.currentHealth = currentHealth;
        }
    }

    public static event EventHandler<HealthEventArgs> HealthEvent;

    public void NotifyHealthChanged(int health) {
        if(HealthEvent != null) {
            HealthEvent.Invoke(this, new HealthEventArgs(health));
        }
    }
}

public class OtherClass {
    public void SubscribeToPlayerHealthEvent() {
        Player.HealthEvent += Foo;
    }

    public void UnsubscribeFromPlayerHealthEvent() {
        Player.HealthEvent -= Foo;
    }

    public void Foo(object o, HealthEventArgs e) {
        //Do something with e.currentHealth
    }
}

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Взгляните на технику внедрения зависимостей.Могу посоветовать начать с Zenject .

0 голосов
/ 09 октября 2018

после @ julxzs и я разговаривал ...

провел небольшую проверку на лучшие практики ... я нашел это

ссылка

так получается, что синглтон - это путь, посмотрите страницу, много полезной информации!thx @ julxzs

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