我想将一个UnityScript的组件(变量,函数,对象)用于另一个。为此,我使用以下脚本代码,但它会抛出一个名为nullpointerreference
的异常,并且不会在日志中显示值。
public var hitCar:camrot;
function Update()
{
if(hitCar.hit==1)
Debug.Log(hitCar.hit);
}
camrot
是另一个UnityScript,其中hit
变量声明为public integer
,上面的代码是在与camrot UnityScript文件不同的脚本中实现的。
答案 0 :(得分:1)
如果要从其他脚本访问变量,可能必须找到脚本附加到的GameObject才能使用它。
(C#,我不懂JavaScript)
脚本1 - 附加到“Player”GameObject,脚本称为PlayerScript
public bool canJump;
void Update()
{
//code
}
脚本2 - 附加到不同的GameObject
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!
}
希望这会有所帮助:)
答案 1 :(得分:0)
取决于您要查找的范围,请记住,如果您没有声明变量并只是分配一个值,它将自动属于GLOBAL范围。
因此,只需指定hitCar.hit = 1而不声明它将分配一个GLOBAL范围,并将在所有相互关联的脚本和函数中工作。如果您在另一个脚本中分配了hitCar.hit,那么在此脚本中重新声明它,它也将恢复为null。所以删除所有声明,看看会发生什么。
如果UNITY是&#34;严格&#34;然后在要执行的第一个脚本文件的顶部声明这些变量。