Unityやったことメモ その6
Unity2D本の進捗
今日は
2.16 敵を倒せるようにする
まで進んだ。今日は本の内容以上に分からないことを調べてる時間が多かったので、以下にまとめた。
ジェネリック覚えた
例の本で一番良くわからないまま使っている部分、そもそも構文が理解できていなかった。
クラスはこんなやつで
/// Token管理クラス public class TokenMgr<Type> where Type : Token {
呼び出している方はこんな奴
/// 親オブジェクト public static TokenMgr<Shot> parent = null;
で、調べたらこれはジェネリックだった。
ポイント
ジェネリック: 型だけ違って処理の内容が同じようなものを作るときに使う。
ジェネリッククラス:IComparable{ int CompareTo(T x, T y); }
ジェネリックメソッド:T max(T x, T y) { ... }
引用元:ジェネリック - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
なるほど、TokenMgrがオブジェクトプールを実装するにあたって、色々な型のオブジェクトをリストで管理するからジェネリックを使っているということだな。読んだだけで書いていないのだがだいたい理解した。
as 覚えた
Resources.Load ("Prefabs/" + prefabName) as GameObject
このas GameObjectってなんだろうと思ったら、ようはキャスト的なことだった。
as 演算子はキャスト操作とよく似ています。 ただし、変換可能でない場合、as は、例外は発生せず、null を返します。
引用元:as (C# リファレンス)
ということらしい。ググると
(GameObject) Resources.Load ("Prefabs/" + prefabName)
と書いてあるコードもあった。
その他覚えた
mono developで、なんとなく ctrl+I でインデントが揃う気がしていたのだが、実際に調べてみたらそうだった。
コピペしたコードなどは ctrl+A したあとに ctrl+I しとく習慣をつけよう。
>|cs|
code ...
||<
よく使うので覚えておこう。
コルーチンまだ理解していない
コルーチン、なんとなくは動きは理解しているが、実際に掛けと言われるとまだ自力で書けない。
こういうのは実際にちょっと書いてみないと身につかない。やはりC#の文法などで色々と試してみたいことが出てきたので、Unity抜きでC#が書ける環境が欲しいな。
qiita.com
と思ってこれ見て環境だけは揃えようと思ったが、去年新調したMacbookにbrewが入っとらんかった。
うーん。時間掛かるんで今日はパス。
さて
ゲームして寝よう。