我的玩家对象有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 的引用,所以它会不断更新,而不是一直手动获取它?
答案 0 :(得分:2)
有没有办法在Start()中获取对selectedObject的引用,所以 它不断得到更新,而不是一直手动获取它?
在“开始”功能中缓存PlayerController
。
private PlayerController playerController;
void Start()
{
playerController = transform.parent.gameObject.GetComponent<PlayerController>();
}
void Update()
{
if (playerController.selectedObject ==
gameObject)
{
Glow();
}
}
答案 1 :(得分:0)
为什么不让Pawn
处理点击互动并存储它是否被选中?然后你会有类似的东西:
if(IsSelected)
Glow();