我的场景中有4个“GameObjectONE”的实例。附加到GameObjectONE的脚本调用委托。我的场景中还有一个叫做gameobject2的对象。附加到GameObjectTwo的脚本包含一个订阅GameObjectONE调用的委托的函数。但是,该函数被调用4次。我想那是因为场景中有4个GameObjectONE副本。不管场景中有多少GameObjectONE实例,GameObjectTwo中的函数是否只调用一次?
这是伪代码,但它显示了我要实现的目标
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.
}
}