将文件移动到标准资产后出现空错误

时间:2016-10-19 15:36:20

标签: c# unity3d namespaces

我有工作项目,但一切都不在标准资产之外。所以我需要将所有文件夹和项目移动到标准资源文件夹。当我将我的所有文件和文件夹移动到标准资源时,它会给我空引用错误。

我的项目中有一个名称空间,当我尝试访问此名称空间时,它会给我null错误。

这是我的名字空间代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Assets.Scripts
{
  public interface IInputDetector
  {
    InputDirection? DetectInputDirection();
 }

  public enum InputDirection
 {
    Left, Right, Top, Bottom

  }
}

并在此处获取访问权限的代码

IInputDetector inputDetector = null; 

和启动方法

void Start(){
   inputDetector = GetComponent<IInputDetector>();
 }

在Update方法中,它给了我错误

var inputDirection = inputDetector.DetectInputDirection(); // Line 222

错误是这样的..

NullReferenceException:对象引用未设置为对象的实例 ControllerMovement.DetectJumpOrSwipeLeftRight()(在Assets / Scripts / ControllerMovement.cs:222) ControllerMovement.Update()(在Assets / Scripts / ControllerMovement.cs:106)

第22行高于var line ..

和106行来自我在Update()方法中调用的方法。

void Update(){
  DetectJumpOrSwipeLeftRight(); // line 106
}

1 个答案:

答案 0 :(得分:2)

第222行中的对象inputdetector似乎为空。在空对象上调用DetectInputDirection()将导致NullReferenceException

由于inputdetector在开头设置为null,并且仅通过方法Start()设置为不同的值,因此有两种可能的选项:

1。)在到达第222行之前未调用Start(),因此inputdetector仍为空。

2。)调用Start(),但GetComponent<IInputDetector>()产生空值。

从当前的代码片段中,无法确定实际发生的是哪一个。