2017-06-06 215 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

相关问题