关于“NullReferenceException: Object reference not set to an instance of an object”的思考

本文解决了在Unity中使用Camera.main.WorldToScreenPoint方法时出现的NullReferenceException异常。问题在于默认Camera.main并非总是指向当前场景中的MainCamera。解决办法是实例化Camera对象并正确绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、执行Vector2 screen_xy = Camera.main.WorldToScreenPoint(transform.position)时,报 “NullReferenceException: Object reference not set to an instance of an object”异常报错。提示对象引用未设置为对象的实例

 

1) 刚开始认为是transfrom对应的object对象未实例化原因,因此尝试直接输入:Vector3 a = new Vector3(0.0f, 0.0f, 0.01f),这样操作可以直接排除是受transform object的影响。但是,并未解决异常,报相同错误。

2)也怀疑是Vector2 screen_xy未进行实例化原因,尝试:Vector2 screen_xy = new Vector2(0.0f, 0.01f)。但是,仍然未解决问题,报相同错误。

3)最后,锁定为Camera.main.WorldToScreenPoint()这个方法,存在未实例化对象问题。只能是Camera.main,通过该网址:https://csharp.hotexamples.com/examples/-/Camera/ScreenToWorldPoint/php-camera-screentoworldpoint-method-examples.html

如下图提示:

    发现两点:第一,Camera是一个类,通过类名调用函数,但是程序中未申请有Camera类。第二,Camera.main默认的是初始化摄像头就是“Main Camera”,但是本Scene是初始化的“Camera”。

 

  1. 解决的方法是:

实例化一个Camera类对象mainCamera,并将其绑定到“Main Camera”上,在用mainCamera取代“Camera.main”,即可实现提取空间坐标系下对应的屏幕坐标。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值