预制不保存公共相机

时间:2014-02-25 23:41:00

标签: c# unity3d

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

public Camera m_Camera;

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

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

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

TIA

修改 我试过了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 个答案:

答案 0 :(得分:1)

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

将m_Camera设置为start / onenable函数,  

之类的东西
m_Camera = Camera.main;