そういえば、UnityのMathfって

クラスじゃないんですね。

と、何故わざわざこんな事を書くかというと、実は拡張メソッドを入れられなかったからでした。
少し前にMathfに拡張メソッドを入れようとしたのですが、スクリプトを入れてもなぜか一向にメソッドが出てきませんでした。
(後日、ただの勘違いだとわかりましたが(汗))

ちなみに、拡張メソッドの書き方はこんな感じ。

//拡張メソッドの一例(Vector3の場合)
public static class Vector3Extend
{
public static void ExtendMethodSample(this Vector3 self, Vector3 a, vector3 b)
{
//(2番目以降の引数は、自由に決められる)
//書きたい処理
}
}


で、小一時間悩んだ挙句、Mathfのソースを見てみると
Unity_Vector3.png

「これ、構造体だったのか。。。」

クラスじゃないから拡張メソッドを入れられないのかと盛大に勘違いしていましたが、
結局、拡張メソッドはインスタンスからしか呼び出せない仕様になっているのを忘れていただけでした...orz

なので、Mathfに拡張メソッドを入れたい場合は、下のように使います。

//Mathfの拡張メソッド
public static class MathfExtend
{
public static void Sample(this Mathf self)
{
//書きたい処理
}
}

//...

//実際の処理
Mathf math = new Math();
mathf.Sample();


結局、拡張メソッドを使う場合はインスタンスを作らないといけないのに、いつものMathf構造体(のメソッド)と同じようにクラスから直接呼び出そうとして参照されないだけでした...orz
そんなわけで、皆様も気を付けましょう(たぶん当方だけでしょうが(^_^;))

あ、Mathfがクラスではないのがちょっと意外でした。

テーマ : ゲーム開発
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

Reveちゃん

Author:Reveちゃん
コンビでやってます。
夢担当と技術担当がいます。

大学院卒業 → ロボットベンチャー(漆黒)就職 → 1年で退職 → ベトナムで仕事中(今ここ) → メディアアーティスト(未来☆)

リンクフリーです。

最新記事
最新コメント
月別アーカイブ
カテゴリ
アクセス数
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR