【发布时间】:2015-04-30 21:24:01
【问题描述】:
我正在尝试在我的项目中为我的汽车制作工作钥匙,但是当我尝试引用另一个脚本时,我收到一条错误消息:
NullReferenceException:对象引用未设置为对象的实例 DrivingScript.Update ()(在 Assets/Car/Trying To Make Custom Car/DrivingScript.js:21)
我已尝试查找,但如果您能帮忙,我找不到问题。
var Car : Transform;
var player : Transform;
var exitPoint : Transform;
var tentplayer : Transform;
var campfire : Transform;
var doorTriggerLeft : Transform;
var PlayerCamera : Camera;
var CarCamera : Camera;
var isPlayerVisable : boolean;
private var invScript : Inventory;
function Start () {
invScript = GetComponent(Inventory);
}
function Update (){
if (CarCamera.enabled == false && invScript.LetDrive == true)
{
if (Input.GetKeyDown("r")&& isPlayerVisable){
//Make player invisable and still standing
player.gameObject.SetActiveRecursively(false);
player.gameObject.active = false;
// Parent player to ExitPoint
player.parent = exitPoint.transform;
player.transform.localPosition = Vector3(-1.5,2,0);
//Parent playerParent to car
exitPoint.parent = Car.transform;
exitPoint.transform.localPosition = Vector3(-0.5,2,0);
// Enable car as controllable object
GameObject.Find("CarJeep").GetComponent("Car").enabled = true;
PlayerCamera.enabled = false;
CarCamera.enabled = true;
}
}
else
{
if (CarCamera.enabled == true)
{ if (Input.GetKeyDown("r")){
// Make Character visable again.
player.gameObject.SetActiveRecursively(true);
player.gameObject.active = true;
// PUT CAFTABLE ITEMS HERE\/ \/ \/
campfire.gameObject.SetActiveRecursively(false);
tentplayer.gameObject.SetActiveRecursively(false);
// PUT CRAFTABLE ITEMS HERE ^^^^
// Unparent Player from everything.
player.transform.parent = null;
// Parent Exit Point to Door Trigger.
exitPoint.parent = doorTriggerLeft.transform;
// Disable car as a controllable
GameObject.Find("CarJeep").GetComponent("Car").enabled = false;
PlayerCamera.enabled = true;
CarCamera.enabled = false;
}
}
}
}
function OnTriggerEnter(Player : Collider) {
isPlayerVisable = true;
}
function OnTriggerExit(Player : Collider) {
isPlayerVisable = false;
}
【问题讨论】:
-
NullReferenceExceptions 总是由同一件事引起的,并且总是以同样的方式解决:当您尝试取消引用对象时,请确保您的对象不为空。
-
在您的情况下,第 21 行是
if (CarCamera.enabled == false && invScript.LetDrive == true)。所以要么CarCamera为空,要么invScript为空。 -
我应该如何正确引用不同的 int。对于不同的脚本,因为我使用了别人的脚本,他们引用了脚本没问题,但是当我尝试复制相同的东西时它不起作用
-
这就是您使用不懂的代码时所冒的风险。
-
由于堆栈溢出没有行号,而且您可能不会复制整个文件,如果您在错误发生的行上添加注释会很好未来。
标签: unity3d nullreferenceexception unityscript