2017-01-08 120 views
0

我的播放器對象有4個子對象,稱爲Pawn 1至4.當我點擊其中一個對象時,它變爲選中。當選擇Pawn時,它應該會發光。現在,麻煩的是,爲了使發光正常發生,每個兵都必須知道它是否被選中。我這樣做,部分通過附加Unity獲取用不同腳本創建的對象的引用

public class PlayerController : MonoBehaviour { 
    public GameObject selectedObject; 
} 

給玩家對象和腳本每個典當對象,除其他事項外,這是否

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

我不禁認爲必須有更好的方法來做到這一點,因爲在每次更新中對每個Pawn執行GetComponent,對每個玩家來說都顯得非常浪費。

有沒有辦法在Start()中獲得對selectedObject的引用,所以它會一直保持更新而不需要手動獲取整個時間?

回答

2

有沒有辦法讓在啓動()的selectedObject的引用,所以它 得到不斷無需手動得到它的全部時間更新?

緩存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();