🦔

Unityの基本事項の備忘録

2021/12/31に公開

Unityにたまにしか触らないのでいつも忘れてしまうので自分用のメモです。
適宜追記していきます。

2022/01/03: "アーキテクチャ" 追加

Editor操作

カメラ操作

コンポーネントのパラメータのコピー&ペースト

  • 実行中に変更したコンポーネントのパラメータをコピー(Copy Component)して、あとで貼り付ける(Paste Component)。
    -

GameObjectの操作

https://unitygeek.hatenablog.com/entry/2016/10/28/142042

  • 頂点を合わせる
    • Vを押しながら移動したいobjectの頂点をクリックすると黄色の正方形が表示される
    • Vを押したまま黄色の正方形を移動すると移動先の頂点に揃う

GameObjectの検索

https://turedureengineer.hatenablog.com/entry/2018/11/17/205537

  • インスペクタに直接アタッチする
  • 名前で検索
    • GameObject object1 = GameObject.Find("Object1");
    • アクティブなものしか取得できない
    • 処理が重い。Start()などで一度だけ呼ぶべき。
  • タグで検索
     - GameObject object1 = GameObject.FindGameObjectWithTag("tag");
     - GameObject object1 = GameObject.FindGameObjectsWithTag("tag");
    • アクティブなものしか取得できない
  • (親オブジェクト).transform.Find("オブジェクトの名前").gameObejct
    • 非アクティブなものも取得できる
    • 子オブジェクトしか取得できない

Componentの検索

  • this.gameObject.GetCompohent<T>() or gameObject.GetCompohent<T>()
    • gameObjectはMonoBehaviourクラスのmemberらしいので継承したクラスで定義しなくてもよいらしい
  • componentのpublicな関数、変数に gameObject.GetCompohent<T>().something_func() and/or  gameObject.GetCompohent<T>().something_var() でアクセスできる

public と [SerializeField] の違い

https://ekulabo.com/public-or-serializefield#:~:text=[SerializeField]をつける,-この[]で&text=publicとの違いは,から値を変更できません。

publicなら他のスクリプトから直接値を変更できますが、[SerializeField]の場合はprivateなフィールドのままなので、他のスクリプトから値を変更できません。

Awake(), OnEnable(), Start() の違い

https://docs.unity3d.com/ja/2018.4/Manual/ExecutionOrder.html

  • Awake(): プレハブのインスタンス化直後
  • OnEnable(): オブジェクトを有効にした直後
  • Start(): 最初のフレームのアップデート前
    Awake()とOnEnable()の使い分けはよくわからない。

衝突判定

http://kimama-up.net/unity-collider/

・両方のオブジェクトに『Collider』がアタッチされている
・少なくとも一方のオブジェクトに『Rigidbody/Rigidbody2D』がアタッチされている

『両方の「Is Trigger」のチェックが外れていると「当たり判定」が発生し、
いずれか一方の「Is Trigger」にチェックが入っていると「トリガー」が発生します』

  • Collider.OnTriggerEnter(Collider)
  • Collider.OnCollisionEnter(Collision)

いつ IsTrigger/UseGravity/IsKinematic をつけるか?

https://qiita.com/nutti/items/1a284c4bf8c79386aca7

Collision Detection の違い

https://virtualcast.jp/blog/2020/05/collisiondetectionchart/

特殊フォルダ

https://docs.unity3d.com/ja/2019.4/Manual/SpecialFolders.html

Resources/

Resources.Load<T>(string path) で読み込める

StreaimngResouces

アセットを別のファイルで元の形式で使用する
ターゲットとなるマシンの標準的なファイルシステム上にデータを配置し、パス名で参照するときに使う

便利なAssets

  • ProBuilder
    • 3Dモデリングツールとレベルデザインツール。Blenderを使えないand/or使うほどではない場合に便利。

アーキテクチャ

どういう構成でつくるか。
↓の1~3のどれかで作っている気がするけど、5でもつくれるようになりたい。

https://sam-16930.medium.com/unity-game-architectures-part-2-672958fcb33a

Discussion