首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetComponent: NullReferenceException

GetComponent: NullReferenceException
EN

Stack Overflow用户
提问于 2015-11-18 20:06:47
回答 1查看 520关注 0票数 0

我得到了以下错误:

NullReferenceException:未设置为对象实例的对象引用

当试图在这一行选择对象时:

代码语言:javascript
复制
Ray ray = mainCamera.GetComponent<Camera>().ScreenPointToRay(new Vector3(x, y));

完整代码:

代码语言:javascript
复制
using UnityEngine;
using System.Collections;
public class pickupobject : 

MonoBehaviour {
    GameObject mainCamera;
    public float distance;
    GameObject carryObject;
    bool carrying;
    void start() {
        mainCamera = GameObject.FindWithTag("MainCamera");
    }

    void pickup()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            int x = Screen.width / 2;
            int y = Screen.height / 2;
            Ray ray = mainCamera.GetComponent<Camera>().ScreenPointToRay(new Vector3(x, y));
            // Debug.DrawRay(ray.origin, ray.direction * 10, Color.yellow);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                pickupcube p = hit.collider.GetComponent<pickupcube>();
                if (p != null)
                {
                    carrying = true;
                    carryObject = p.gameObject;
                }
            }
        }
    }

    void carry(GameObject o)
    {
        o.GetComponent<Rigidbody>().isKinematic = true;
        o.transform.position = mainCamera.transform.position + mainCamera.transform.forward * distance;
    }

    // Update is called once per frame
    void Update()
    {
        if (carrying)
        {
            carry(carryObject);
        }
        else
        {
            pickup();
        }
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-18 20:54:29

试着像下面这样写同一行:

代码语言:javascript
复制
Ray ray = Camera.main.gameObject.GetComponent<Camera>().ScreenPointToRay(new Vector3(x, y, 0));

首先,FindWithTag和任何查找都是相当广泛的(在您的情况下并不重要,因为您只调用了它一次,但只是为了记录一下),您应该检查拼写,并使用Debug.Log();打印到控制台值的mainCamera,雷等……看看你什么时候能得到意想不到的结果。现在,只要尝试一下我的代码,它几乎是一样的,它只使用不同的引用相机

http://docs.unity3d.com/ScriptReference/Camera-main.html

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

https://stackoverflow.com/questions/33789369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档