2013-02-14 48 views
2

我的腳本附加到字符控制器。如何從統一的另一個對象訪問攝像頭3d

而且我宣佈,

public Camera camera; 

。在更新功能我給出

if(Input.GetMouseButtonDown(0)){ 
Ray ray = camera.ScreenPointToRay(Input.mousePosition); 
if (Physics.Raycast (ray, out hit3, 400.0F)){ 
    print(hit3.collider.gameObject.name); 
} 
} 

但我得到錯誤

"UnassignedReferenceException: 
The variable camera of 'characterScript' has not been assigned. 
You probably need to assign the camera variable of the 
characterScript script in the inspector." 

幫我一個很好的解決方案。

在此先感謝。

回答

2

你沒有初始化你的相機。你必須通過unity3D的UI來設置它。只需將相機拖放到公共參數中即可。

3

將其拖放到變量在UI,或者在腳本中添加此位在啓動時自動執行:

void Start() 
{ 
    camera = (Camera) GameObject.FindObjectOfType(typeof(Camera)); 
} 

演員可能是多餘的。 另外,只有當你有一個相機才能正常工作。

+1

這個腳本不會正常工作,如果他對現場幾臺攝像機。所以他應該從UI拖放相機,這將工作在100% – Maris 2013-02-14 12:02:17

+0

是的,這就是爲什麼我寫了這個:) 但我同意,最好的選擇是拖動到變量。 – Jens 2013-02-14 12:05:47

3

您還可以使用相機類的以下靜態變量從任何地方訪問攝像機(S):

Camera.current我們目前正在與渲染的相機。

Camera.main第一個啓用攝像頭標記爲「MainCamera」。

Camera.allCameras返回場景中所有啓用的攝像機。

無需尋找它,相機類需要跟蹤它的實例爲我們:)

第h的照顧。

傑羅姆