c# - 为什么 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;
}
}
解决方案
根据视频,您必须将FixedJoystick对象从场景的层次结构拖放到Inspector 中PlayerMovement的操纵杆字段中(查看视频中的 11:24)
推荐阅读
- java - 为什么在 catch 块中使用 sc.next()?
- kubernetes - ~/.kube/config 中的“preferences: {}”有什么作用?
- kql - 任何使用 KQL 到 ElasticSearch 的接口?
- python - Webdriver manager ValueError:无法使用此命令获取 Chrome 的版本
- redis - ServiceStack RedisMessageQueueClient:错误没有返回到ReplyTo地址,也没有使用RetryAttempts?
- uima - 匹配 RUTA 规则中的两个注释
- javascript - 如何将客户端套接字 javascript 更改为客户端套接字 php
- mysql - 排序mysqldump输出的索引?
- node.js - Elasticsearch 错误,“数据”参数必须是字符串类型或 Buffer、TypedArray 或 DataView 的实例。收到未定义
- android - firebase auth 和 url_launcher 版本冲突