首页 文章

预制不保存公共相机

提问于
浏览
1

我在Unity3D中创建了一个简单的预制件 . 我想添加对相机的引用,所以我创建了一个公共变量m_Camera:

public Camera m_Camera;

然后我将预制件拖入场景,并将相机拖到UI上以设置我想要引用的相机 . 最后我点击“应用”将更改应用到预制件 .

当我运行场景时,我拖入场景的预制件有Camera参考,但是我在运行时实例化的预制件在变量UI中有“None(Camera)” .

如何在预制件上设置摄像机参考并在预制件中保存预制件,以便在实例化预制件时使用?

TIA

EDIT 我试过 m_Camera = Camera.main;m_Camera = GameObject.Find("ARCamera").camera; 但两者似乎都没有用 . 当预制件上有一个mousedown时,我试图获得光线投射:

public Camera m_Camera;

    void OnMouseDown () {
        RaycastHit hitInfo;
        m_Camera = Camera.main;
        if (Physics.Raycast(m_Camera.ScreenPointToRay(Input.mousePosition), out hitInfo))
        {
            Debug.Log("Prefab was pressed");

        }
    }

我们在Unity编辑器中通过UI将相机拖动到m_Camera变量中,它确实有效,我将输出输出到控制台 .

1 回答

  • 1

    因为您可以从任何场景实例化预制件,在这种情况下,预制件将无法了解前一场景中的摄像头 . 简而言之,预制件可以访问全局对象或有孩子 . 解:

    将m_Camera设置为start / onenable函数,例如

    m_Camera = Camera.main;
    

相关问题