2015-10-20 59 views
1

我想使用一個UnityScript的組件(變量,函數,對象)到另一個。爲此,我使用以下腳本代碼,但它會引發一個名爲nullpointerreference的異常,並且不會在日誌中顯示值。如何使用一個腳本的組件到另一個?

public var hitCar:camrot; 

function Update() 
{ 
    if(hitCar.hit==1) 
     Debug.Log(hitCar.hit); 
} 

camrot是另一個UnityScript其中hit變量聲明爲public integer,和上述代碼在除camrot UnityScript文件不同的腳本實現。

+0

此處的任何更新?答案中的任何一個讓你更接近解決方案?你是否找到了解決你的問題的答案? – Serlite

回答

0

取決於你正在尋找的範圍只要記住,如果你沒有聲明一個變量,只需指定一個值,它將自動成爲GLOBAL範圍。

因此,簡單地分配hitCar.hit = 1而不聲明它將分配一個GLOBAL範圍,並且可以跨越所有相關的腳本和函數。如果您在另一個腳本中分配了hitCar.hit,然後在該腳本中重新聲明它,它也將恢復爲null。所以刪除所有的聲明,看看會發生什麼。

如果UNITY爲「strict」,則將這些變量聲明在要執行的第一個腳本文件的頂部。

+0

我知道,但沒有工作 –

1

如果您想從另一個腳本訪問變量,您可能必須找到腳本所附的GameObject才能使用它。

(C#,我不知道的JavaScript)

腳本1 - 連接到 「播放器」 遊戲對象,腳本稱爲PlayerScript

public bool canJump; 

void Update() 
{ 
    //code 
} 

腳本2 - 連接到不同的遊戲對象

GameObject player; 
void Start() 
{ 
    player = GameObject.Find("Player"); //finds the gameobject called "Player" 
} 
void Update() 
{ 
    player.GetComponent<PlayerScript>().canJump = false; //use the variable in another script! 
} 

希望這有助於:)

+0

對不起,但它不工作,即使當我試圖在javascript中轉換它 –

+0

你試過用什麼代碼? – Tom

+0

我使用了你的建議,但將它轉換爲javascript之後 –

相關問題