2015-10-20 32 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之后 –

相关问题