例如,假设我们在一个脚本中有一个health变量,并且想要访问UI脚本中的此变量以显示健康状况,另一方面要根据健康程度来更改声音的音调。 我知道一些访问此变量的方法,但是它们彼此之间高度依赖。像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
}
}