Unity 获取在不同脚本中创建的对象的引用

Unity get a reference of an Object created in a different script

我的玩家对象有 4 个子对象,称为 Pawn 1 到 4。当我点击其中一个时,它变成 selected。当一个 Pawn 被选中时,它应该会发光。现在,问题在于,为了正确地发光,每个 Pawn 都必须知道它此刻是否被选中。我通过附上

来完成那部分
public class PlayerController : MonoBehaviour {
    public GameObject selectedObject;
}

到 Player 对象,以及到每个 Pawn 对象的脚本,除其他外,执行此操作

void Update()
{
    if (transform.parent.gameObject.GetComponent<PlayerController>().selectedObject == 
        gameObject)
    {
        Glow();
    }
}

我忍不住认为必须有更好的方法来执行此操作,因为对每个玩家的每个更新、每个 Pawn 执行 GetComponent 似乎非常浪费。

有没有办法在 Start() 中获取对 selectedObject 的引用,使其不断更新而无需一直手动获取它?

为什么不让 Pawn 处理点击交互并存储它是否被选中?然后你会得到类似的东西:

if(IsSelected)
    Glow();

Is there a way to get a reference to the selectedObject in Start(), so it keeps getting updated without manually getting it the whole time?

在启动函数中缓存 PlayerController

private PlayerController playerController;

void Start()
{
    playerController = transform.parent.gameObject.GetComponent<PlayerController>();
}

void Update()
{
    if (playerController.selectedObject ==
        gameObject)
    {
        Glow();
    }
}