我在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 回答
因为您可以从任何场景实例化预制件,在这种情况下,预制件将无法了解前一场景中的摄像头 . 简而言之,预制件可以访问全局对象或有孩子 . 解:
将m_Camera设置为start / onenable函数,例如