写経の感想
UnityではじめるC# 基礎編 写経したので忘れそうな操作をメモしておく。
「Unityの教科書」は写経済みで、Animationのadd keyframeの操作以外はサクサク進めることが出来て、写経するのに2日はかからなかった。
Unityの教科書はシンプルなミニゲーム集でUnityの操作に慣れていって、最後にシナリオ性を持たせた3Dゲームを作成したんだけど、こちらはシナリオ性のある2つの2Dゲーム( 脱出ゲームとボール落下キャッチ )を制作して、「ゲーム」を制作する感覚を学べた。
ここで言うシナリオ性とは「ゲームとしてクリアまでのデザインがある」という意味。
あと、Unityの教科書よりUIオブジェクトをガンガン使うので、そちらの使い方も勉強になった。
少しボリューム不足かな?という感想はあるにはある。
けど、こういった動くゲームを作るのって本当楽しいね。
忘れそうなことリファレンス
UICanvasのサイズをカメラサイズに合わせる
Render Mode - Screen Space - Camera : UIを指定したカメラの撮影範囲に収まるよう調整
UI Scale Mode - Scale With Screen Size : Reference Resolutionのサイズに調整
Screen Match Mode : 実際の画面サイズとReference Resolutionに差異がある場合、高さ&幅どちらを基準にしてサイズを変更するか。
UI Button
配置したボタンのOnClickイベントにスクリプトファイルのpublicメソッドを紐づける。
publicメソッドに引数がある場合はインスペクタから引数を指定できる。
スクリプトファイル
public void PushStartButton(){ }
Buttonのヒエラルキウィンドウから、OnClick - 「+」 - None右アイコンをクリック - Sceneタブ - スクリプトファイルを選択 - No Functions から呼び出すメソッド名を指定。
ボタン押下の無効化
Button.interactable = false
アンカーポイント
ストレッチの場合はScene幅からマージンを取るような配置が可能。負の数を指定してはみ出すような設定もできる。
GameObjectをhiddenにする
GameObject.SetActive(false);
非アクティブ時は紐づけているスクリプトのupdate()も停止する。
PrefabインスタンスのApply
Prefabから生成したインスタンスに変更を加えた時、Applyを押すと、加えた変更が元になるPrefabにも反映される。
逆にPrefabへの変更を生成済みインスタンスに反映させる場合は、RevertでPrefabの設定に反映(戻す)ことができる。
ScreenToWorldPoint
スクリーン座標からワールド座標に変換
Camera.main.ScreenToWorldPoint(new Vector3(x, y, z));
テキストや画像に縁取りをつける
Add Component - UI - Effects - Outline
テキストのアニメーション
Anchored Position からタイムライン上に座標指定しながらadd keyframeしていく。
ループの制御はアニメーションクリップのLoop Timeで制御。
PlayerPrefs
データ保存するUtility。
使用例
PlayerPrefs.SetInt("TEST", 100); int v = PlayerPrefs.GetInt("TEST");
Invoke
リフレクション。文字列と同名のメソッドを実行。第二引数で指定した秒数分、遅延して実行開始できる。
Invoke( "methodName", 3.0f );
配列の要素数を調べる
引数は次元数を指定するらしい。0は1次元とのこと。
Array.GetUpperBound(0);
public宣言した配列
インスペクタから要素数を指定することができる。要素数分、フォームが現れるので値またはオブジェクトを指定できる。