2017-07-03 26 views
0

我需要通過字符串變量從對象中獲取組件。我該怎麼做?Unity GetComponent(string Script)

這裏是我當前的代碼:

Canvas.GetComponent<Global_Variables>().Active_Figure.GetComponent(Script_Name).Cancel(); 

但我得到以下錯誤在控制檯:

資產/腳本/ Cell.cs(62,20):錯誤CS1061:類型UnityEngine.Component'不包含取消'的定義,也不包含取消'UnityEngine.Component'類型的取消'

+0

不知道你多久使用'GetComponent(string)',但這很慢。你爲什麼這樣做?你的問題中的代碼有什麼問題? – Programmer

+0

我無法調用Cancel()bc我無法通過GetComponent(Script_Name)獲取腳本 –

+0

您是否收到任何錯誤?什麼是Cancel()?我認爲你應該發佈腳本以及你如何搭配來訪問它。 – Programmer

回答

1

您必須投下返回的結果。

我將假定Cancel函數是在一個名爲Cancelable的類(或接口)中定義的,您的腳本正在繼承(或實施)。

Cancelable myScript = Canvas.GetComponent<Global_Variables>().Active_Figure.GetComponent(scriptName) as Cancelable; 
myScript.Cancel(); 

編輯:

下一次,不要忘記發佈您的代碼格式正確無誤,並把任何附加信息,可以幫助如何解決你的問題(如錯誤控制檯給你)

+0

不,這對我沒用。我有一個GameObject與此腳本。這個腳本必須是通用的所有類=/ –

+0

那麼,取消定義在哪個類?用'Name_of_the_class_implementing_Cancel myScript'替換聲明'Script_Name myScript' – Hellium

+0

我需要改變數據類型...例如:Pawn Script = new Pawn()如果我選擇Pawn並且如果我選擇King我需要asign King Script = new King() –