我有工作项目,但一切都不在标准资产之外。所以我需要将所有文件夹和项目移动到标准资源文件夹。当我将我的所有文件和文件夹移动到标准资源时,它会给我空引用错误。
我的项目中有一个名称空间,当我尝试访问此名称空间时,它会给我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
}
答案 0 :(得分:2)
第222行中的对象inputdetector
似乎为空。在空对象上调用DetectInputDirection()
将导致NullReferenceException
。
由于inputdetector在开头设置为null,并且仅通过方法Start()
设置为不同的值,因此有两种可能的选项:
1。)在到达第222行之前未调用Start()
,因此inputdetector
仍为空。
2。)调用Start()
,但GetComponent<IInputDetector>()
产生空值。
从当前的代码片段中,无法确定实际发生的是哪一个。