У меня есть 4 экземпляра GameObjectONE в моей сцене.Скрипт, который прикреплен к GameObjectONE, вызывает делегата.У меня есть другой объект под названием GameObjectTwo в моей сцене.Скрипт, который прикреплен к GameObjectTwo, содержит функцию, которая подписывается на делегат, вызываемый GameObjectONE.Однако эта функция вызывается 4 раза.Я думаю, это потому, что на сцене есть 4 копии GameObjectONE.Есть ли способ вызвать функцию внутри GameObjectTwo только один раз, независимо от того, сколько экземпляров GameObjectONE существует в сцене?
Это псевдокод, но он показывает, чего я пытаюсь достичь
using System;
using UnityEngine;
public class GameObjectONE : MonoBehaviour
{
public static event Action<Vector3> OnClick;
private void Update()
{
if (currentlySelected)
if (clickedOnTerrain)
{
var clickPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
OnClick?.Invoke(clickPos);
MoveToTarget();
}
}
}
Второй класс
using UnityEngine;
public class GameObjectTWO : MonoBehaviour
{
private void Awake()
{
GameObjectONE.OnClick += AssignTargets;
}
private void OnDestroy()
{
GameObjectONE.OnClick -= AssignTargets;
}
private void AssignTargets(Vector3 clickPos)
{
//Based on the click position, find and assign a target for each unit.
}
}