【问题标题】:NullReferenceException: Object reference not set to an instance of an object DrivingScript.Update ERRORNullReferenceException:对象引用未设置为对象的实例 DrivingScript.Update 错误
【发布时间】: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


【解决方案1】:

您似乎没有在编辑器中设置 CarCamera 属性并将其留空,而此脚本依赖于它的设置。

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2016-06-05
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多