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();
}
}
我的玩家对象有 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();
}
}