Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
private void ChangeHealth(float health){
_playerView.Changehealth(health);
}
_playerModel.ChangedHealth += ChangeHealth;
…
private void ChangeHealth(float health){
_playerView.Changehealth(health);
}
_playerModel.ChangedHealth += _playerView.Changehealth
Это больше MVP, чем MVC.
Я ничего не понял из того что вы сейчас сказали, но просто сравните с каноническими диаграммами:

и

У вас не три равноправных компонента как в MVC, у вас два компонента + тонкая прослойка между ними, то есть MVP.
[RequireComponent(typeof(Unit))]
public class Health : MonoBehaviour
{
public float max;
float current;
public float regenerationDuration;
public float regenerationDelay;
float timeToRegenerate;
Armor armor;
void Start() {
armor = GetComponent<Armor>();
current = max;
}
void FixedUpdate() {
timeToRegenerate = Mathf.Max(0f, timeToRegenerate - Time.fixedDeltaTime);
if (timeToRegenerate == 0f) Regenerate(Time.fixedDeltaTime);
}
void Update() {
if (current <= 0) GetComponent<Unit>().Die();
}
public void GetDamage(Damage damage) {
float armorResistanceFactor = 0f;
if (armor != null) {
armorResistanceFactor = armor.GetResistanceFactor(damage.type);
}
current -= damage * (1 - armorResistanceFactor);
timeToRegenerate = regenerationDelay;
}
void Regenerate(float deltaTime) {
health += max * (ms / regenerationDuration)
}
}
MVP в Unity или как упростить жизнь