【Unity公式チュートリアル】スクリプティング〈レッスン1.8-1.12〉
- この記事について
- Awake()に注意
- Start()の実行タイミング
- ベクトルのプチまとめ
- enable と SetActive()
- activeSelf と activeInHierarchy
- ひとこと
この記事について
注意事項
- 特に断りがない限り、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.magnitude
やVector3.magnitude
)が用意されている。
内積
二つのベクトルの各要素を掛け合わせたものの和。和が0になるかどうかでベクトルが垂直であるかどうかの判断に使うことが出来る。
使用例:飛行機が地面に対して水平かどうかを調べる
なお、内積を計算する関数(Vector2.Dot
やVector3.Dot
)が用意されている。
外積
二つのベクトルに垂直なベクトルを生成する。二つのベクトルからなる平面に垂直なベクトルが誕生するイメージ。当たり前だが、2Dでは概念自体が存在しない。
使用例:戦車の放題の回転前後のベクトルから回転軸ベクトルを求める
なお、外積を計算する関数(Vector3.Cross
)が用意されている。
enable と SetActive()
公式チュートリアルでコンポーネントのアクティブ切り替えにはenable
を、GameObjectのアクティブ切り替えにはSetActive()
を使用していたので従うのが吉?
activeSelf と activeInHierarchy
activeSelf:自身がアクティブかどうか
activeInHierarchy:実際にアクティブかどうか
分かりづらいと思うので具体例を以下に示します。
上画像のような構造になっているオブジェクトがあるとする。この時のBについて見ていく。
Aがアクティブ / Bがアクティブ
activeSelf → true
activeInHierarchy → trueAがアクティブ / Bが非アクティブ
activeSelf → false
activeInHierarchy → falseAが非アクティブ / Bがアクティブ
activeSelf → true
activeInHierarchy → falseAが非アクティブ / Bが非アクティブ
activeSelf → false
activeInHierarchy → false
親が非アクティブな時点で子も非アクティブ扱いになるのでactiveInHierarchyは親が非アクティブであれば100%falseになりそうですね(`・ω・´)
ひとこと
activeSelf と activeInHierarchy...。私は何に使えるか思いつきませんが役に立つ時が来るんでしょうね...(´・ω・`。)タブン
初心者の方や熟練者の方を問わずTwitterのフォローお待ちしています...(`・ω・´) ヨロシク!