ぱふの自由帳

週2更新目指す技術ブログ。メインはUnity。最近、競プロ始めましたー!良ければフォローお願いします(`・ω・´)

【Unity公式チュートリアル】スクリプティング〈レッスン1.8-1.12〉

この記事について

注意事項

  • 特に断りがない限り、C#について記述しています
  • 個人的に知らなかったこと、誰かの役に立ちそうな事をまとめています

レッスンタイトル一覧

1.8 Awake and Start
1.9 Update and FixedUpdate
1.10 Vector Maths
1.11 Enabling and Disabling Components
1.12 Activating GameObjects

Awake()に注意

Awake()スクリプトが非アクティブでも実行される。
参考リンク:Scriptを非アクティブにしても生き残る関数たち

Start()の実行タイミング

Start()スクリプトがアクティブな状態での最初のフレーム(Update()の前)で一度のみ実行される。アクティブなスクリプトを一旦、非アクティブにした後に再びアクティブにしても実行されないことに注意。

ベクトルのプチまとめ

長さ

長さは”Magnitude”と呼ばれる。自前で計算しなくて済むように変数(Vector2.magnitudeVector3.magnitude)が用意されている。

内積

二つのベクトルの各要素を掛け合わせたものの和。和が0になるかどうかでベクトルが垂直であるかどうかの判断に使うことが出来る。

使用例:飛行機が地面に対して水平かどうかを調べる

なお、内積を計算する関数(Vector2.DotVector3.Dot)が用意されている。

外積

二つのベクトルに垂直なベクトルを生成する。二つのベクトルからなる平面に垂直なベクトルが誕生するイメージ。当たり前だが、2Dでは概念自体が存在しない。

使用例:戦車の放題の回転前後のベクトルから回転軸ベクトルを求める

なお、外積を計算する関数(Vector3.Cross)が用意されている。

enable と SetActive()

公式チュートリアルコンポーネントのアクティブ切り替えにはenableを、GameObjectのアクティブ切り替えにはSetActive()を使用していたので従うのが吉?

activeSelf と activeInHierarchy

activeSelf:自身がアクティブかどうか
activeInHierarchy:実際にアクティブかどうか

分かりづらいと思うので具体例を以下に示します。

f:id:PafuOfDuck:20171030024913p:plain
上画像のような構造になっているオブジェクトがあるとする。この時のBについて見ていく。

  • Aがアクティブ / Bがアクティブ
    activeSelf → true
    activeInHierarchy → true

  • Aがアクティブ / Bが非アクティブ
    activeSelf → false
    activeInHierarchy → false

  • Aが非アクティブ / Bがアクティブ
    activeSelf → true
    activeInHierarchy → false

  • Aが非アクティブ / Bが非アクティブ
    activeSelf → false
    activeInHierarchy → false

親が非アクティブな時点で子も非アクティブ扱いになるのでactiveInHierarchyは親が非アクティブであれば100%falseになりそうですね(`・ω・´)

ひとこと

activeSelf と activeInHierarchy...。私は何に使えるか思いつきませんが役に立つ時が来るんでしょうね...(´・ω・`。)タブン

初心者の方や熟練者の方を問わずTwitterのフォローお待ちしています...(`・ω・´) ヨロシク!