【问题标题】:Calling a method from another class: 'Object reference not set to an instance of an object.' [duplicate]从另一个类调用方法:“对象引用未设置为对象的实例。” [复制]
【发布时间】:2021-03-04 04:56:32
【问题描述】:

我正在创建一个根据按下的键在屏幕上移动精灵的方法

class InputController
{
    public void DetectInput (Vector2 position)
    {
        if (Keyboard.GetState().IsKeyDown(Keys.W))
        {
            position.Y -= 1;
        }

        if (Keyboard.GetState().IsKeyDown(Keys.S))
        {
            position.Y += 1;
        }

        if (Keyboard.GetState().IsKeyDown(Keys.A))
        {
            position.X -= 1;
        }

        if (Keyboard.GetState().IsKeyDown(Keys.D))
        {
            position.X += 1;
        }

如果我在其他班级尝试调用,但收到错误消息:

System.NullReferenceException: '对象引用未设置为对象的实例

InputController 为空

这是其他类的相关代码

private InputController InputController;

protected override void Update(GameTime gameTime)
{
    InputController.DetectInput(_position);
}

【问题讨论】:

    标签: c# monogame


    【解决方案1】:

    您的问题是 InputController == null。可能在您的代码中的某个地方,这没有被运行:

    InputController = new InputController();
    

    【讨论】:

    • 啊,我明白了,所以我必须在我的更新方法中声明“InputController = new InputController();”谢谢
    • 它并不一定要在 Update 方法中创建,但你必须在使用 InputController.DetectInput 之前的某个时间点创建一个 InputController
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多