2016-05-16 59 views
0

我在我的遊戲中有2個c#腳本。對他們來說是我的「主要玩家對象」,另一個劇本是在「我的主相機」中。我想在我的主播放器的腳本中聲明一個浮點變量,並且在每一個遊戲中,我都希望記錄播放器在該變量中的x位置,同時將此值傳遞給我的主相機的腳本並分配此在每一秒遊戲中我的主攝像頭的x位置都會被記錄下來。我如何將變量傳遞給另一個腳本的腳本?或者我如何創建一個可以在我的遊戲中使用任何腳本的變量?Unity 3D中的共享變量

+0

有幾種方法可以解決這個問題。一種是在相機腳本上製作一個公共的Transform/GameObject變量,然後在Unity檢查器中將播放器對象拖到它上面。然後,您可以使用它來訪問播放器的'transform.position.x'。這對於你的案例來說是最簡單的解決方案,在播放器腳本本身上不需要額外的腳本。但是,這隻會使相機腳本可以訪問該變量 - 如果您需要從項目中的所有腳本訪問該變量,則需要採用不同的方法。 – Serlite

+1

做什麼湯姆說。這個問題已被問過1000次! – Fattie

回答

2

有解釋的很詳細這個問題的答案here,而是包含在這個問題的答案最簡單的方法是做類似如下:

public class Speed: MonoBehaviour 
    public float speed; 
    // maybe you want restrict this to have read access, then you should use a property instead 

然後在其他腳本:

GameObject gameObject = GameObject.Find ("Some object"); 
Speed theSpeed = gameObject.GetComponent <Speed>(); 
float mySpeed= theSpeed.speed; 
+0

第二種方式看起來更安全。非常感謝你。 –

+0

沒問題,如果這有助於確保您選中答案! :-) – Tom