首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我要获得Null引用异常,尽管我要检查对象是否为null来执行某项

为什么我要获得Null引用异常,尽管我要检查对象是否为null来执行某项
EN

Game Development用户
提问于 2022-01-18 01:07:59
回答 3查看 822关注 0票数 0

嗨,我只是想把一个简单的飞鸟游戏转换成多人游戏。

所以在多人游戏中使用光子,我希望鸟与地面或管道相撞,而不是与敌人的鸟.i.e.,忽略敌人的鸟碰撞。我想出了办法,下面的代码。

因此,我用名为"BirdClass“的名称标记了这只鸟,在开始时,我第一次使用了以下代码来忽略coillision:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void Start()
    {
       PV = GetComponent<PhotonView>();
        playerBird = GameObject.FindGameObjectWithTag("BirdClass");
        if (playerBird != null)
            Physics2D.IgnoreCollision(playerBird.GetComponent<Collider2D>(), GetComponent<Collider2D>());

    }

在这里,我得到以下错误:

ArgumentNullException:值不能为空。参数名称: collider1 UnityEngine.Physics2D.IgnoreCollision (UnityEngine.Collider2D collider1,UnityEngine.Collider2D collider2) (at <4e5075cf57c3416eb788a8bd41817a84>:0) BirdPigeon.Start () (at资产/脚本/BirdPigeon.cs:45)

onCollider2d函数如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void OnCollisionEnter2D(Collision2D collision)
    {
        playerBird = GameObject.FindGameObjectWithTag("BirdClass");
        if (isMultiPlayerGame && playerBird != null && PV.IsMine)
        {           
           if (collision.gameObject.tag == playerBird.gameObject.tag)
            {
                Physics2D.IgnoreCollision(collision.gameObject.GetComponent<Collider2D>(), GetComponent<Collider2D>());
            }
            else
            {
                BirdCollided?.Invoke(true);             
            }
        }
        if (!isMultiPlayerGame)
        {
            BirdCollided?.Invoke(true);
            rigidBodyOfBird.velocity = Vector2.zero;
        }
    }

在这里,我得到了这样的错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"NullReferenceException: Object reference not set to an instance of an object
BirdPigeon.OnCollisionEnter2D (UnityEngine.Collision2D collision) (at Assets/Scripts/BirdPigeon.cs:81)"

我不明白,虽然我正在检查它是否为空,为什么我仍然会得到这些错误?

EN

回答 3

Game Development用户

发布于 2022-01-18 04:27:02

似乎您的"playerBird“游戏对象没有Collider2D类型的组件。确保其中一个2D对撞机是附加的。当您想通过GetComponent找到它时,必须将它直接附加到对象上。当对撞机连接到"playerBird“的子对象时,使用GetComponentInChildren代替。

还请记住,也有对撞机没有后缀"2D“。这些是3D物理引擎使用的3D对撞机。2D和3D对撞机是完全独立的系统,不相互作用。

票数 1
EN

Game Development用户

发布于 2022-01-18 04:29:11

虽然这不是修复您的空指针,但它最终会有相同的结果。您正在尝试手动解决冲突异常。这对你来说很好,团结组织用一个简单的碰撞矩阵来传递这个信息。如果你使用的是二维物理,你需要使用2D版本。

https://docs.unity3d.com/Manual/LayerBasedCollision.html

票数 0
EN

Game Development用户

发布于 2022-02-17 18:37:56

您的playerBird不是null,但显然没有附加Collider2D,因此调用如下:

playerBird.GetComponent<Collider2D>()返回空

票数 0
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/198923

复制
相关文章
DRF中多对多ManytoMany字段的更新和添加
drf的序列化器给模型输出带来了便利但是对于多对多字段网上查询的内容却是很少(也有可能是本人不会搜答案)
对你的承诺
2023/09/07
9880
详解Mybatis一对多、多对一、多对多
是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。简单说来就是关系型数据库用了选择、投影、连接、并、交、差、除、增删查改等数学方法来实现对数据的存储和查询。可以用SQL语句方便的在一个表及其多个表之间做非常复杂的数据查询。安全性高。
utopia
2023/03/21
1.5K0
快速学习-JPA中的多对多
比如A同学,它是我的学生,其中有个身份就是学生,还是家里的孩子,那么他还有个身份是子女。
cwl_java
2020/04/01
1.6K0
快速学习-JPA中的多对多
Django ORM 一对多 和 多对多
django ORM中一对多,和多对多字段正反向查询例子 一对多 在 models.py 上定义: class Province(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name class City(models.Model): name = models.CharField(max_length=32) pro = mod
kirin
2020/05/12
2.4K0
EF Core中的多对多映射如何实现?
EF 6.X中的多对多映射是直接使用HasMany-HasMany来做的。但是到了EF Core中,不再直接支持这种方式了,可以是可以使用,但是不推荐,具体使用可以参考《你必须掌握的EntityFramework 6.X与Core 2.0》一文。在这里我就详细的说下如何在EF core下实现。 首先就是实体类的建立:
Ryan_OVO
2023/10/19
3670
MyBatis 详解(一对一,一对多,多对多)
1、什么是MyBatis?   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,
IT可乐
2018/01/04
5.2K0
MyBatis 详解(一对一,一对多,多对多)
Hibernate 中 一对多、多对一、 关联关系的 配置
多对一:(街道→区县) * TBLJd.java 类* public class TblJd implements java.io.Serializable { // Fields private Integer jdid; private TblQx tblQx; private String jd; private Set tblFwxxes = new HashSet(); ...... } TblJd.hbm.xml: <cla
qubianzhong
2018/08/10
3.1K0
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
别先生
2018/01/02
4.7K0
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
TypeORM 多对多查询实现
首先定义2个实体 Article 和 Category是多对多的关系,一篇文章可以有多个分类,一个分类可以包含多篇文章
狂奔滴小马
2021/11/15
3.3K0
Hibernate annotation多对多配置
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115813.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
9270
Hibernate annotation多对多配置
【MySQL】多对多练习案例
ALTER TABLE orderitem ADD CONSTRAINT orderitem_order_fk FOREIGN KEY (oid) REFERENCES `order`(oid)
陶然同学
2023/02/24
1.5K0
【MySQL】多对多练习案例
Django实战-多对多查询
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/10/15
3K0
Django实战-多对多查询
Entity Framework 多对多映射
上一篇文章我们讲解了EF中的一对对多的关系映射,这篇文章我们讲解EF中的多对多(Many-to-Many Relationship)关系映射。这篇文章我们同样通过一个简单的例子来讲解多对多的关系映射。
喵叔
2020/09/08
1.1K0
Entity Framework 多对多映射
mybatis 详解(七)------一对一、一对多、多对多
  前面几篇博客我们用mybatis能对单表进行增删改查操作了,也能用动态SQL书写比较复杂的sql语句。但是在实际开发中,我们做项目不可能只是单表操作,往往会涉及到多张表之间的关联操作。那么我们如何
IT可乐
2018/01/04
5.9K0
mybatis 详解(七)------一对一、一对多、多对多
多对一和一对多
1.UserMapper.xml代码 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybat
2020/10/23
1.1K0
数据库(三)--多对多,一对多,一对一
那么,我们要是想查询python是由那几家出版社出版的(虽然一般只是一家) ,我们可以这样做:
西西嘛呦
2020/08/26
1.3K0
flask-sqlalchemy 一对一,一对多,多对多操作
先进行如下操作: from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app=Flask(__name__) db=SQLAlchemy(app) 一对多: class Parent(db.Model):     id=db.Column(db.Integer,primary_key=True)     name=db.Column(db.String(30),unique=True)     children=db.re
用户1214487
2018/04/17
3.6K0
Django 标签筛选的实现代码(一对多、多对多)
Video_Type = models.CharField(max_length=50)
用户2323866
2021/07/13
1.8K0
MyBatis:多对一和一对多
目录 多对一 配置数据库 搭建环境测试 按查询嵌套处理 按结果嵌套处理 总结 一对多 实体类编写 按结果嵌套处理 按查询嵌套处理 总结 多对一 多对一关系:多个学生对应一个老师 配置数据库 数据库的设计: 创建数据库: CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8
愷龍
2023/01/08
9790
MyBatis:多对一和一对多
SpringDataJpa多表查询 下(多对多)
比如A同学,它是我的学生,其中有个身份就是学生,还是家里的孩子,那么他还有个身份是子女。
暴躁的程序猿
2022/03/23
1.8K0

相似问题

Linq to Entities多对多查询WPF DataGrid

12

Linq to entities多对多左连接树

14

Linq to Entities Where子句中的多对多

22

Linq to Entities :多对多连接表和视图

10

Linq to Entities -对多对多表使用group by

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文