Unity Action отделяет классыC#

Место общения программистов C#
Anonymous
Unity Action отделяет классы

Сообщение Anonymous »

Я изучаю Unity, чтобы знать, как избежать зависимостей. У меня есть два класса, один из которых генерирует событие:

Код: Выделить всё

public class ClickController : MonoBehaviour
{
public static event Action OnClickControllerEvent; // new

private void Update()
{
if (Input.GetMouseButtonDown(0))
OnLeftClick();
}

private void OnLeftClick()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(ray, out hit))
{
Debug.Log("The cube was clicked! Notifying subscribers!");

if (OnClickControllerEvent != null) // new
OnClickControllerEvent(this);
}
}
}
И еще один, который слушает это событие:

Код: Выделить всё

public class HealthController : MonoBehaviour
{
[SerializeField] private int minHealth = 0;
[SerializeField] private int maxHealth = 100;

private int health = 100;

private void OnEnable() // new
{
ClickController.OnClickControllerEvent += TakeDamage;
}

private void OnDisable() // new
{
ClickController.OnClickControllerEvent -= TakeDamage;
}

private void TakeDamage(ClickController clickController) // changed
{
health -= 10;

if (health

Вернуться в «C#»