素人ゲーム開発を垂れ流しつつ、覚醒に至るまでの記録や役立ち情報、愚痴を書くブログ。ちなみに前立腺の開発もやっている。
Unity、というかC#を勉強中
以前にも書いたように、UnityにはECSと言うものがありまして
そちらを使うために今まで使ってこなかった命令を勉強中です。
基本的にこのECSは「MonoBehaviour」を使わない(最終的には変換時使う?)
方法を使うようで、その命令の一部に「抽象クラス(abstract)」と言うものが
出てきます。スクリプトを作る際、継承自体Unityでは基本的に「MonoBehaviour」
をデフォルトで継承しているので継承系の命令も使わないし
抽象クラスの中身に出てくる「TestClass<T>」のような、いわゆるジェネリック型(と言うらしい)
の理解も全くしていないものが出てきます。
実際はUnityの「Monobehaviour」でも使われていたんですが、この「< >」の意味が分からないまま
使っていましたってのが正確な表現でしょうか。
Unityでなくとも「リスト(配列)」などでも使ってますね。
この用に知らず知らずの内に使っていたものの、実際
何なのかがよく分からないでいました。
これをジェネリックと言うみたいなのですが(薬のほうじゃない)
なんと・・・関数の定義側の引数の型
が自在に変えられるもののようです!
ちょっとこれでは説明が良く分かりませんね。
この場合は「Getcomponent<Text>()」ですが
分かりやすいように敢えて関数として例えますね。
このような事になっているようです。
こちらは関数ではなくメソッドですが
Getcomponent<Text>();
この場合、<>で囲われた中に書いた型が上のStringの引数から
Text型に変化する様です。C言語系は定義してる側の引数の型が固定
と言うのが常識ですが、この部分を自在に変えることが出来るみたいなんですね~
このように「T」の部分が、変化します。
インスタンス化して
Test test = new Test();
このように書いた後、
test.Method<Text>("文字")
と書いた場合に、上の様にMethodの定義した「T」の部分が
全てTextに変換されてしまうという事らしいです。
()の中の"文字"は、Testクラスの中に作ったmethod関数の定義の
「T」の部分がTextに変換され、引数である()の"文字"が内部で
Text型の"文字"として処理される模様。
そちらを使うために今まで使ってこなかった命令を勉強中です。
基本的にこのECSは「MonoBehaviour」を使わない(最終的には変換時使う?)
方法を使うようで、その命令の一部に「抽象クラス(abstract)」と言うものが
出てきます。スクリプトを作る際、継承自体Unityでは基本的に「MonoBehaviour」
をデフォルトで継承しているので継承系の命令も使わないし
抽象クラスの中身に出てくる「TestClass<T>」のような、いわゆるジェネリック型(と言うらしい)
の理解も全くしていないものが出てきます。
実際はUnityの「Monobehaviour」でも使われていたんですが、この「< >」の意味が分からないまま
使っていましたってのが正確な表現でしょうか。
Unityでなくとも「リスト(配列)」などでも使ってますね。
| // 配列 var List = new List<string>(); 又は・・・ |
| // コンポーネント Text a = Getcomponent<Text>(); |
この用に知らず知らずの内に使っていたものの、実際
何なのかがよく分からないでいました。
これをジェネリックと言うみたいなのですが(薬のほうじゃない)
なんと・・・関数の定義側の引数の型
が自在に変えられるもののようです!
ちょっとこれでは説明が良く分かりませんね。
この場合は「Getcomponent<Text>()」ですが
分かりやすいように敢えて関数として例えますね。
main { Test<int>(); } // 関数の定義 void Test(String string) { ↑この型がintに変わる!!! String a = string; ↑この型がintに変わる!! } |
このような事になっているようです。
こちらは関数ではなくメソッドですが
Getcomponent<Text>();
この場合、<>で囲われた中に書いた型が上のStringの引数から
Text型に変化する様です。C言語系は定義してる側の引数の型が固定
と言うのが常識ですが、この部分を自在に変えることが出来るみたいなんですね~
| public Class Test<T> { // メソッド public T Method(T val){ var T resault = val ; return val; } } |
このように「T」の部分が、変化します。
インスタンス化して
Test test = new Test();
このように書いた後、
test.Method<Text>("文字")
と書いた場合に、上の様にMethodの定義した「T」の部分が
全てTextに変換されてしまうという事らしいです。
()の中の"文字"は、Testクラスの中に作ったmethod関数の定義の
「T」の部分がTextに変換され、引数である()の"文字"が内部で
Text型の"文字"として処理される模様。
PR
COMMENT
ブログ内検索
カテゴリー
最新記事
最新コメント
プロフィール
HN:
kawaハギ
年齢:
36
性別:
男性
誕生日:
1989/07/03
職業:
無職
趣味:
ゲーム 音楽
自己紹介:
人類を5次元意識へ押しあげる為のゲームを
開発しています。
小学生3年頃から鬱を発症。対人恐怖症、醜形恐怖等で引きこもり。
生きる意味を長らく探し求め、ようやく答えを見つけスピリチュアル
にたどり着く。覚醒を数段階体験し現在は”もう一度”物理的な自立を目指しています。
開発しています。
小学生3年頃から鬱を発症。対人恐怖症、醜形恐怖等で引きこもり。
生きる意味を長らく探し求め、ようやく答えを見つけスピリチュアル
にたどり着く。覚醒を数段階体験し現在は”もう一度”物理的な自立を目指しています。
カウンター