Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity2D错误:“错误”;对象引用未设置为对象的实例_C#_Unity3d - Fatal编程技术网

C# Unity2D错误:“错误”;对象引用未设置为对象的实例

C# Unity2D错误:“错误”;对象引用未设置为对象的实例,c#,unity3d,C#,Unity3d,我正在制作一个2d统一游戏,我试图对敌人NPC造成伤害。但是,我很难将敌方脚本引用到玩家脚本 获取以下错误: 对象引用未设置为对象的实例 playeratack.Update() 代码: //创建玩家可以伤害敌人的无形圆圈 //什么设置为层掩码 Collized R2d[]enemiesToDamage=Physics2D.OverlappCircleall(攻击位置、攻击范围、敌人); for(int i=0;i

我正在制作一个2d统一游戏,我试图对敌人NPC造成伤害。但是,我很难将敌方脚本引用到玩家脚本

获取以下错误:

对象引用未设置为对象的实例 playeratack.Update()

代码:

//创建玩家可以伤害敌人的无形圆圈
//什么设置为层掩码
Collized R2d[]enemiesToDamage=Physics2D.OverlappCircleall(攻击位置、攻击范围、敌人);
for(int i=0;i

我做错了什么

由于您使用的是OverlappCircleall而不是碰撞矩阵,因此您正在拾取各种其他“碰撞”

因此,您可以做的一件事是添加空检查以排除所有“非敌人”对象,如下所示:

if(enemiesToDamage[i].GetComponent<enemy>() != null)
if(enemiesToDamage[i].GetComponent()!=null)

另外,正如Josh指出的,根据具体情况,您可能需要首先找出检测到“错误冲突”的原因。

看起来
.GetComponent()
调用可能失败。如果没有完整的异常消息,很难判断。要么是这个,要么是别的什么,都会在whatisnakers层中被发现。信息不足,无法在此提供帮助。请放置
try catch
块并打印enemiesToDamage的内容。似乎其中一个没有附加脚本(因为
GetComponent
似乎是唯一可能失败的东西),这几乎肯定意味着圆圈与墙或其他项目(如灯光、地板等)重叠。@Darkonekt感谢您,一切正常:D@Darkonekt这是一个快速解决方案,但最好弄清楚为什么会捡到不符合标准的东西。
if(enemiesToDamage[i].GetComponent<enemy>() != null)