2017-06-06 148 views
1

我在Unity中使用第三方庫Google VR。 在這一LIB的一個C#-source文件,添加靜態方法調用一類爲LibClass是這樣的:是否有可能重寫第三方庫中的方法?

void onPrerender() { 
    MyOwnClass.staticMethod(); 
    (continue with original method call...) 
} 

但每次我更新庫,調用MyOwnClass.staticMethod()丟失,我必須手動重新添加它。 我不能繼承LibClass,因爲庫總是調用LibClass而不是LibSubClass。 有沒有辦法以編程方式將調用添加到LibClass的staticMethod()?或者其他方式?

編輯: 我被要求說明問題更好:

OnPreRender是MonoBehaviour類統一的方法。 在渲染相機圖像之前調用此方法。 我的問題是我需要Google VR,它爲每隻眼睛處理兩個單獨的相機,以繪製其中一個相機圖像稍微不同的相機圖像。 由於OnPreRender是爲每個攝像頭調用的,因此我使用它作爲在我自己的類中調用靜態方法的入口點(因爲這種方式我不必在Google VR類中實例化自己的類)。

現在很多月都可以正常工作,但Google VR庫不斷更新,每次我這樣做時,調用我自己的類的方法都會丟失。

所以我想知道是否有可能通過編程的方式說「你在那裏,在外部類中的OnPreRender(),當你被圖書館調用時,跳過這裏,做一些額外的工作。 這有道理嗎?

+1

這是不可能隨時隨地覆蓋任何'static'方法。你需要做的是[在這裏解釋你的真正目標](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - *你爲什麼要調用MyOwnClass.staticMethod()在onPrerender?* - 我們可以通過改變圖書館來幫助您解決您試圖解決的問題。 –

+0

親愛的愛德,我試着解釋我的真正目標。那個更好嗎? – user1840267

+0

感謝您的更新。這確實有道理。如果我是你,我會用[tag:Unity]來標記這個。 –

回答

0

您可以嘗試使用擴展方法。請注意,此工作僅適用於對象函數的靜態調用。

你可以找到更多: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

+0

謝謝。在我看來,如果我可以自己調用有關的方法,這將會很有用。不幸的是,它被圖書館所稱。我想我第一次嘗試時沒有解釋清楚。對不起。我編輯了這個問題並試圖更好地解釋。 – user1840267

相關問題