Introduction

いつも通りの備忘録。

ここは更新されていく記事?

What is this?

プロジェクトの形式

フォルダとファイルの集まり。

Visual Studio のような .sln ファイルは存在しない。

Build Setting はどこに保存されるのか?

Library\EditorUserBuildSettings.asset らしい。

変更後、別のプロジェクトで上書きしたら、設定が変わっていたので間違いないと思われる。

MonoBehaviour って何?

Unityプログラミングにおいて用いられる、全てのクラスの基底クラスとなるクラス。
下記の継承関係を持つ。

UnityEngine.Object → UnityEngine.Component → UnityEngine.Behaviour → UnityEngine.MonoBehaviour

この Object は System.Object ではない点に注意。

何で Start/Update/Awake は private なの?

別に public でも動く。

上記の Stackoverflow から辿れる、Unity の公式ブログによれば、

  • マジックメソッドを呼び出すのにリフレクションは使ってない
    • マジックメソッドとは MonoBehaviour に元々備わっているメソッド (というよりイベント関数)
      • ここでいう、Start/Update/Awake
  • あるタイプのMonoBehaviourが初めてアクセスされたとき、そのスクリプトはスクリプトランタイム (Mono または IL2CPP) を通し、マジックメソッドが定義されているかどうかを調べ、この情報はキャッシュされる

Start/Update/Awake の役割は?

スクリプトのライフサイクルが詳しい。

  • 最初のシーンのロード
    • Awake
      • この関数は常に Start 関数の前およびプレハブのインスタンス化直後に呼び出されます。
        • もしゲームオブジェクトがスタートアップ時に無効である場合、有効になるまで Awake は呼び出されません。
  • 最初のフレームを更新する前
    • Start
      • スクリプトのインスタンスが有効な場合にのみ、最初のフレームのアップデート前に Start が呼び出されます。
  • アップデートの順番
    • Update
      • Update は、 1 フレームにつき 1 度呼び出されます。これは、フレームのアップデートの主となる関数です。

Awake → Start と続いていき、Update は必要に応じて何度も呼ばれる感じか?
WinForm でいう、Invalidate からの Update みたい?

描画処理は Update に書けばいいって感じか。

どうやって高速に描画しているのか?

下記を読め!

マジックメソッドのインテリセンスが効かないなんて問題はパフォーマンスの前には些末なこと。