🐥

unityのコード基礎知識

に公開

この内容はUnity6(6000.0.45f1)で日本語です。
今学んでいるところを記載したものです
自分のコードを抜粋して説明を書いているので抜けいているところがあるかもですがお許しください。
変数は「m_ 」や小文字で表現しております。

using UnityEngine;
これはUnityを使用するにあたって必要、usingはC++の#includeと同じ

public class Player : MonoBehaviour
Playerというクラスは、publicなので後々ほかのクラスからアクセスなどに使う
MonoBehaviourはunityのプログラムの機能が詰まったクラス

[Header("ナンバー"),Tooltip("これは、ナンバーである")]
public int m_No;
Headerを使えばインスペクターで注釈文を表示可能(翻訳でNoがいいえに置き換わってます)

Tooltipを使えば変数名にマウスを重ねると注釈を表示できる(名前は気にしないで)

[SerializeField]
private string m_Name;
SerializeFieldを使えばインスペクターでpublic同様名前が変更可能に

public Vector3 m_MovePoint;
Vectr3はx、y、z軸を格納できる変数

public Rigidbody m_Rigidbody;
RigidbodyはUnityで物理をつかさどる
Rigidbodyを使用することで当たり判定や投擲等の物理移動が可能に

void Start()
スクリプトを開いたときに最初からある関数
この関数はこのプログラムが起動したとき一度だけ実行する(set upと思ってもいいかも)

if(!m_Rigidbody)
{
m_Rigidbodyの中身がない(null)という意味

if(!gaameObject.GetComponent<RIgidbody>())
gameObject.AddComponent<Rigidbody>();
このプログラムのゲームオブジェクト内にRigidbodyというクラス(コンポーネント)が存在しなければ
gameObject.AddComponent<Rigidbody>()を実行する

GetComponentはコンポーネントがあれば抽出
AddComponentは該当コンポーネントをゲームオブジェクトに追加

m_Rigidbody = gameObject.GetComponent<Rigidbody>();
}
ゲームオブジェクトにRigidbodyが追加されたのでリンクとしてm_Rigidbodyに代入し
m_Rigidbodyがゲームオブジェクト内のRigidbodyと同義になる
インスペクターにRigidbodyがなくても

private void Awake()
ゲームオブジェクトがシーンに登場したときに一番最初に呼ばれる関数
よく使う場面として変数の初期化の時などによく使われる

ちょっとした豆知識(Start()との違い)
「Awake」は一番最初に呼び出される「Start」はAwakeの後 & 最初のフレーム前に呼び出される
そして「Awake」はよく使われる場面として変数の初期化などに使われる。さらにそのプログラムが停止したとしてオブジェクトが再びシーンにロードされたときに限り最初に実行される

void Update()

1フレームに1度実行する関数、このプログラムが削除されない限り永遠に実行し続ける

m_MovePoint = new Vector3(
Input.GetAxis("水平"),
0,
Input.GetAxis("垂直")
);
Input.GetAxis("水平")はADの入力で-1~1がx軸に代入される
Input.GetAxis("垂直")はWSの入力で-1~1がz軸に代入される
(y軸は代入される対象がないので0にしている)
ここで名前を水平と垂直に変更

m_Rigidbody.linearVelocity =
transform.right * m_MovePoint.x * m_MoveSpeed +
transform.forward * m_MovePoint.z * m_MoveSpeed;

igidbodyにアクセスし、linearVelocityに代入されるのは
現在のゲームオブジェクトローカル向きX軸(right)に対してキー入力(左右)×移動力分と、
現在のゲームオブジェクトローカル向きZ軸(forward)に対してキー入力(上下)×移動力分を加味して、
物理に対してこのフレーム間で得られた【物理的移動力】分をプレイヤーの移動力として加える
これでプレイヤーは移動が完成したことになる

Discussion