如何使用一个脚本的组件到另一个?
问题描述:
我想使用一个UnityScript的组件(变量,函数,对象)到另一个。为此,我使用以下脚本代码,但它会引发一个名为nullpointerreference
的异常,并且不会在日志中显示值。如何使用一个脚本的组件到另一个?
public var hitCar:camrot;
function Update()
{
if(hitCar.hit==1)
Debug.Log(hitCar.hit);
}
camrot
是另一个UnityScript其中hit
变量声明为public integer
,和上述代码在除camrot UnityScript文件不同的脚本实现。
答
取决于你正在寻找的范围只要记住,如果你没有声明一个变量,只需指定一个值,它将自动成为GLOBAL范围。
因此,简单地分配hitCar.hit = 1而不声明它将分配一个GLOBAL范围,并且可以跨越所有相关的脚本和函数。如果您在另一个脚本中分配了hitCar.hit,然后在该脚本中重新声明它,它也将恢复为null。所以删除所有的声明,看看会发生什么。
如果UNITY为“strict”,则将这些变量声明在要执行的第一个脚本文件的顶部。
+0
我知道,但没有工作 –
答
如果您想从另一个脚本访问变量,您可能必须找到脚本所附的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!
}
希望这有助于:)
此处的任何更新?答案中的任何一个让你更接近解决方案?你是否找到了解决你的问题的答案? – Serlite