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