首页 > 解决方案 > 为什么 Unity 中的操纵杆会出现此错误?

问题描述

我目前正在以初学者的身份制作 2D 游戏,我想在我的游戏中添加操纵杆控件。我在 Brackeys 的 youtube 视频中制作了所有内容,但我总是收到此错误:

NullReferenceException: Object reference not set to an instance of an object
PlayerMovement.Update () (at Assets/Scripts/PlayerMovement.cs:21)

有人可以帮我吗?youtube 视频和时间戳的链接是:

https://youtu.be/bp2PiFC9sSs?t=780

我当前的脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour {

    public CharacterController2D controller;
    public Animator animator;

    public Joystick joystick;

    public float runSpeed = 40f;

    float horizontalMove = 0f;
    bool jump = false;
    bool crouch = false;

    // Update is called once per frame
    void Update() {

        if (joystick.Horizontal >= .2f)
        {
            horizontalMove = runSpeed;
        } else if (joystick.Horizontal <= -.2f)
        {
            horizontalMove = -runSpeed;
        } else
        {
            horizontalMove = 0f;
        }

        float verticalMove = joystick.Vertical;

        animator.SetFloat("Speed", Mathf.Abs(horizontalMove));

        if (verticalMove >= .5f)
        {
            jump = true;
            animator.SetBool("IsJumping", true);
        }

        if (verticalMove <= -.5f)
        {
            crouch = true;
        }
        else
        {
            crouch = false;
        }

    }

    public void OnLanding ()
    {
        animator.SetBool("IsJumping", false);
    }

    public void OnCrouching (bool isCrouching)
    {
        animator.SetBool("IsCrouching", isCrouching);
    }

    void FixedUpdate ()
    {
        // Move our character
        controller.Move(horizontalMove * Time.fixedDeltaTime, crouch, jump);
        jump = false;
    }
}

标签: c#unity3dcontrollerjoystick

解决方案


根据视频,您必须将FixedJoystick对象从场景的层次结构拖放到Inspector 中PlayerMovement的操纵杆字段中(查看视频中的 11:24)


推荐阅读