クラスじゃないんですね。
と、何故わざわざこんな事を書くかというと、実は拡張メソッドを入れられなかったからでした。
少し前にMathfに拡張メソッドを入れようとしたのですが、スクリプトを入れてもなぜか一向にメソッドが出てきませんでした。
(後日、ただの勘違いだとわかりましたが(汗))
ちなみに、拡張メソッドの書き方はこんな感じ。
1 2 3 4 5 6 7 8 9 10 |
; title="ExtendMethod"] //拡張メソッドの一例(Vector3の場合) public static class Vector3Extend { public static void ExtendMethodSample(this Vector3 self, Vector3 a, vector3 b) { //(2番目以降の引数は、自由に決められる) //書きたい処理 } } |
で、小一時間悩んだ挙句、Mathfのソースを見てみると
「これ、構造体だったのか。。。」
クラスじゃないから拡張メソッドを入れられないのかと盛大に勘違いしていましたが、
結局、拡張メソッドはインスタンスからしか呼び出せない仕様になっているのを忘れていただけでした…orz
なので、Mathfに拡張メソッドを入れたい場合は、下のように使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
; title="MathfExtend"] //Mathfの拡張メソッド public static class MathfExtend { public static void Sample(this Mathf self) { //書きたい処理 } } //... //実際の処理 Mathf math = new Math(); mathf.Sample(); |
結局、拡張メソッドを使う場合はインスタンスを作らないといけないのに、いつものMathf構造体(のメソッド)と同じようにクラスから直接呼び出そうとして参照されないだけでした…orz
そんなわけで、皆様も気を付けましょう(たぶん当方だけでしょうが(^_^;))
あ、Mathfがクラスではないのがちょっと意外でした。
コメント