にしかわのメモブログ

やったことをすぐに忘れちゃうおじさんなので、メモ的に記録していくわ

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
と思ってこれ見て環境だけは揃えようと思ったが、去年新調したMacbookbrewが入っとらんかった。
うーん。時間掛かるんで今日はパス。

さて

ゲームして寝よう。