UnityではじめるC# 基礎編 写経メモ

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

写経の感想

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宣言した配列

インスペクタから要素数を指定することができる。要素数分、フォームが現れるので値またはオブジェクトを指定できる。