NullReferenceException:对象引用未设置为unity 3D中试图生成函数的对象的实例

本文关键字:函数 对象 实例 对象引用 设置 3D unity NullReferenceException | 更新日期: 2023-09-27 18:04:46

 using UnityEngine;
using System.Collections;
[RequireComponent(typeof(flipPlayer))]
public class enemyInstantiate : MonoBehaviour 
{
    public GameObject[] enemies;
    public Transform enemyPos;
    public GameObject enemyClone;

    void Start()
    {
        enemyPos = GameObject.Find("enemySpawn").transform;
        enemyClone = GameObject.FindGameObjectWithTag("Player");
        enemySpawn();
        flip();
    }
    public void enemySpawn()
    {
        int enemyIndex = Random.Range(0, enemies.Length);
        Instantiate(enemies[enemyIndex], transform.position, transform.rotation);

    }
    void flip()
    {
        enemyClone.GetComponent<flipPlayer>().enabled = true;
    }
}

NullReferenceException:对象引用未设置为对象的实例enemyInstantiate.flip(((位于Assets/Scripts/enemyInstantate.cs:32(enemyInstantiate.Start(((位于Assets/Scripts/enemyInstantinate.cs:18(

我对Unity 3D很陌生仍然有问题,你能帮我解决问题吗?为什么我会得到一个nullReferenceException。

错误出现在行(enemyClone.GetComponent((.enabled=true;(中。

NullReferenceException:对象引用未设置为unity 3D中试图生成函数的对象的实例

可能在这一行

enemyClone = GameObject.FindGameObjectWithTag("Player");

正在将null返回到var enemyClone,和/或从行返回GetComponent<flipPlayer>()

enemyClone.GetComponent<flipPlayer>()

也返回CCD_ 4。

当您试图访问作为null引用的对象的成员时,会发生此错误。

因此,检查哪个引用为空的一种方法是通过MonoDevelop进行调试。

如果没有完整的错误,我只能说:

  • 随机。范围是介于最小值和最大值之间的数字,包含在内!因此,例如,如果你的长度是4,并且你的射程从0-4开始,并且你试图接近敌人[4],它就会崩溃!你需要你的线是随机的。范围(0,enemies.length-1(
  • 你的敌人阵列中有物品吗
  • 你在现场有敌人吗?也许先将该行分离成一个声明,然后在尝试访问它的转换之前确保该项不是null

希望这对你有帮助!如果没有,请张贴发生空引用的行