2017-06-06 12 views
1

私はUnityでサードパーティのライブラリGoogle VRを使用しています。 そのLIBの1つのC#の-sourceファイルの中で、私はこのようなクラスLibClassに静的メソッドの呼び出しを追加:サードパーティライブラリのメソッドをオーバーライドすることはできますか?

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

しかし、私は、ライブラリを更新するたびに、MyOwnClass.staticMethod()への呼び出しが失われ、手動で再追加する必要があります。 ライブラリは常にLibClassを呼び出すが、LibSubClassは呼び出さないので、LibClassをサブクラス化することはできません。 staticMethod()への呼び出しをプログラムでLibClassに追加する方法はありますか?それとも他の方法ですか?

編集: 私はより良い問題を記述するように求めてきた:

OnPreRenderはユニティのMonoBehaviourクラスのメソッドです。 このメソッドは、カメラの画像がレンダリングされる前に呼び出されます。 私の問題は、それぞれの目に2つの別々のカメラを扱うGoogle VRが、もう1つのカメラの画像とは少し異なる画像を描画する必要があることです。 各カメラで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

関連する問題