ジェノベーゼのUnity備忘録

Unity関連についてのブログです。

tips

tips:連続して参照すると異なる値が返るプロパティは定義しない

連続して呼びだすと異なる値が返るプロパティは原則として定義しない方が良い。 // ダメな例 public int Value{ get{ _index++; return _numbers[_index]; } } プロパティではなく次のようなメソッドにすれば、 連続して呼び出した時に違う値が返ることを利…

tips:引数にoutキーワードをつけたメソッドは可能な限り定義しない

outキーワードを使っているメソッドは良いメソッドとは言えない場合がほとんど。 特に引数が一つでそれにoutキーワードがついているメソッドは、明らかに設計ミスである。 呼び出しもとに結果を返すなら戻り値として返すべき。 唯一outキーワードが許される…

tips:継承するときの注意点

クラスの継承はis a関係が成り立つときだけ使う。 共通のプロパティがあるからといって共通部分を抜き出して 基底クラスとして定義しようという考えは間違っている。 共通化のための継承は百害あって一利なし。 継承はそれほど多用するものではない。

tips:プレハブを普通のオブジェクトに戻す方法

プレハブを普通のゲームオブジェクトに戻す(展開する)には 右クリックメニューから prefab→unpack を選択すると展開される。 ネスト化されたものまで全て展開するには unpack completely ただし、オーバーライドしているものは展開されない

tips:プレハブを普通のオブジェクトに戻す方法

プレハブを普通のゲームオブジェクトに戻す(展開する)には 右クリックメニューから prefab→unpack を選択すると展開される。 ネスト化されたものまで全て展開するには unpack completely ただし、オーバーライドしているものは展開されない

tips:プレハブモードから抜けるとundoできなくなる

Unityの作業で、プレハブモードでプレハブを編集して プレハブモードから抜けるとundoができなくなるので オブジェクトを削除した後などは注意するよう心がける。

tips:プレハブモードから抜けるとundoできなくなる

Unityの作業で、プレハブモードでプレハブを編集して プレハブモードから抜けるとundoができなくなるので オブジェクトを削除した後などは注意するよう心がける。

tips:書き込み専用プロパティは定義しない

getキーワードのないsetキーワードだけのプロパティは定義してはいけない。 オブジェクトにおける属性を表すものがプロパティなので 属性の値を知ることのできないプロパティはプロパティとしての意味がない。 もしそういうものがあるならそれはプロパティで…

tips:変数の宣言はできるだけ遅らせる

変数の宣言をクラスやメソッドの先頭にまとめて書く人がいるが、それはいい書き方とは言えない。 プログラムの理解を妨げることになるし、バグを混入させる危険を高めることになる。 先頭で宣言する変数は全体で利用される変数であるという認識をもつ。

tips:Unity Editor のバージョン種別

サポート期間 説明 LTSストリーム 2年間 バグフィックスが2年間実施される。TECHストリームの最終バージョンがLTSストリームへと引き継がれる TECHストリーム 次のLTSリリースまで 年2回のメジャーバージョンアップが計画されている プレリリース なし αバー…

tips:マジックナンバーを避ける

マジックナンバーには名前をつける クラス内で使うマジックナンバーはconstで名前をつける。 またconstはpublicにしない。 他のクラスに見せる場合は public static readonly を使う(constのバージョン管理問題)

tips : アセットのバージョン管理

GUID Unityは内部的には「GUID」という値を用いて、Assetの一貫性を保っている。 同じファイルを複数回読み込んでしまってもGUIDが一緒なら正しく上書きされる。 このGUIDは「meta」をついてるテキストファイルに書き込まれており、 このファイルもGitなどで…

2次元配列をforeachで使うときの注意点

2次元配列をforeachで回すと 次元ごとではなく単純に要素[0,1],[0,2],[0,3]の順番で 取り出されので使いにくいことに注意。

文字列を数値に変換する

型の変換にはキャスト演算子(int)aなどが使われるが キャストでstring型を数値にはできない。 この場合はint.Parse(文字列)やdouble.Parse(文字列)を使う。 変換が保障されていない場合にはTryParseを使う。

tips:フィールドのpublicとプロパティの違い

C#では、フィールドは必ずprivateにした方が良い。 フィールドとプロパティではその背景にある思想が全く異なる。 フィールドは内部のデータでプロパティは外部とのインターフェイスである。 また以下の二つのコードには実質的な違いもいくつかある。 public…