首页 > 解决方案 > 是什么导致了这个 NullReferenceException?- 统一 C#

问题描述

我有一个PlayerController附加到刚体游戏对象的脚本。此脚本包含布尔值,当设置为 true 时,会将脚本附加到游戏对象。

例如,如果canMove布尔值设置为 true,它将向玩家附加一个脚本,允许游戏对象通过用户输入移动。


我有很多布尔值,但一个值是canWallClimb. 当我将此设置为 true 时,它​​会将 WallClimb 脚本附加到播放器底部的薄立方体上。当立方体接触到带有“CanClimb”标签的对象时,它应该执行以下代码:

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

public class WallClimb : MonoBehaviour
{

    PlayerController player;

    private void Start()
    {
        player = GetComponent<PlayerController>();
    }

    private void OnTriggerEnter(Collider other)
    {
        Debug.Log(other.gameObject.name);
        if (other.gameObject.tag == "CanClimb")
        {
            player.gameObject.transform.position += new Vector3(0, 5, 0);
        }
    }

    private void OnTriggerExit(Collider other)
    {
        
    }
}

玩家的位置应该在 y 轴上移动 5 个单位。但我得到的是这个错误:

NullReferenceException: Object reference not set to an instance of an object WallClimb.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Player/WallClimb.cs:24)

我该如何解决?

谢谢。

标签: c#unity3dnullreferenceexception

解决方案


推荐阅读