2017-01-08 3 views
0

Мой объект-плеер имеет 4 дочерних объекта, называемых пешками с 1 по 4. Когда я нажимаю на один из них, он становится выбранным. Когда выбрана пешка, она должна светиться. Теперь проблема состоит в том, что для того, чтобы светящиеся события были правильными, каждая Пешка должна знать, выбрана ли она в данный момент, или нет. Я сделал эту часть, прилагаяUnity получает ссылку на объект, созданный в другом скрипте

public class PlayerController : MonoBehaviour { 
    public GameObject selectedObject; 
} 

к объекту игрока, и скрипт для каждого объекта Pawn, который, помимо всего прочего, делает этот

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

Я не могу помочь, но думать, что должен быть лучший способ сделать это, как выполнение GetComponent на каждом обновлении на каждой пешке, поскольку каждый игрок кажется невероятно расточительным.

Есть ли способ получить ссылку на selectedObject в Start(), чтобы он постоянно обновлялся без ручного получения всего времени?

ответ

2

Есть ли способ, чтобы получить ссылку на selectedObject в Start(), так он продолжает получать обновляться без вручную получать это все время?

Кэш PlayerController в функции запуска.

private PlayerController playerController; 

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

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

Спасибо, именно то, что я искал. – Fisteon

0

Почему бы не написать Pawn взаимодействие с кликом и сохранить, выбрано ли оно? Тогда вы бы что-то вроде:

if(IsSelected) 
    Glow();