You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取鼠标位置时触发RayCast相关NullReferenceException错误求助

解决Unity空引用错误(NullReferenceException)

你的报错指向DragBlock.Update()第13行,核心原因及修复方案如下:

直接触发错误的原因:Camera.main为空

第13行Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);中,Camera.main返回了null,通常是因为主相机未设置MainCamera标签。

修复方法:

  • 编辑器中选中主相机,在Inspector的Tag下拉菜单选择MainCamera(无此标签则新建);
  • 更可靠的方式是直接引用相机组件,避免动态查找:
    using UnityEngine;
    
    public class DragBlock : MonoBehaviour
    {
        [SerializeField] private Camera mainCamera; // Inspector面板拖入主相机
        private bool isBeingHeld = false;
        private Vector3 startPos;
        private Transform heldObject;
    
        private void Update()
        {
            if (Input.GetMouseButton(0))
            {
                Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
    
                if (Physics.Raycast(ray, out hit))
                {
                    if (hit.transform.CompareTag("Blocks"))
                    {
                        isBeingHeld = true;
                        startPos = hit.transform.position;
                        heldObject = hit.transform;
                    }
                }
            }
    
            if (isBeingHeld && heldObject != null)
            {
                Vector3 currentMousePos = mainCamera.ScreenToWorldPoint(Input.mousePosition);
                currentMousePos.z = heldObject.position.z;
                heldObject.position = currentMousePos;
            }
    
            if (Input.GetMouseButtonUp(0))
            {
                isBeingHeld = false;
                heldObject = null;
            }
        }
    }
    

潜在空引用风险修复

即使解决了相机问题,若isBeingHeld为true但heldObject未赋值(比如异常流程),访问heldObject.position仍会报错。修复方式:

  • 在使用heldObject前增加空值判断(如上代码中的isBeingHeld && heldObject != null);
  • 鼠标抬起时重置heldObject为null,避免残留无效引用。

额外检查点

  • 确保带Blocks标签的物体有Collider组件(如BoxCollider),否则射线无法检测到;
  • 检查物体所在层级,确保不在Ignore Raycast层级上。

内容的提问来源于stack exchange,提问作者Games Dark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:25:30