UnityのスクリプトはC#で書きます.Unity上でスクリプトを実行するには,まず,MonoBehaviourというクラスを継承したクラスを作成することになります.
UnityエディタのProjectタブで右クリック→Create→C# ScriptとするとMonoBehaviourを継承した空のクラスを作成できます.
作成したクラスにはStartとUpdateの関数(空)が定義されていると思います.これらは特別な関数(イベント関数)で,Unityシーンの実行時に特定のタイミングに呼び出されます.
MonoBehaviourのStart関数は,シーン実行の最初のフレームの前に呼び出されます.初期化処理などはここに書きます.
同様なイベント関数にAwakeというものがあります.AwakeはシーンがロードされたときにStartよりも先に呼び出さます.他のオブジェクトのStartよりも前に実行したい初期化処理はAwakeに書きます.
下のように書くとシーンの開始時にUnityエディタのConsoleタブに"Start!"と出力されます.
void Start() {
Debug.Log("Start!");
}
MonoBehaviourのUpdate関数は,毎フレーム1回呼び出されます.フレームレートによって,呼び出される間隔は変動します.
対して,FixedUpdate関数は,シーン内時間で一定の間隔で呼び出されます.すべてのオブジェクトのFixedUpdateの実行後にUnityの物理演算が走ります.
車の制御など物理演算が絡む処理はFixedUpdateに書きます.
上で紹介した以外にも,OnCollisionEnter(物体との衝突時に呼び出し)など,様々なイベント関数があります.
他のイベント関数のリストやその実行順序については以下を参照してください.
MonoBehaviourスクリプトリファレンス:https://docs.unity3d.com/ja/2021.3/ScriptReference/MonoBehaviour.html
公式マニュアル・イベント関数の実行順序:https://docs.unity3d.com/ja/2021.3/Manual/ExecutionOrder.html
MonoBehaviourを継承したスクリプトを作成しただけでは,実行されません.シーン上のオブジェクトにアタッチする必要があります.
シーン上のオブジェクトを選択してから,Inspectorタブの一番下のAdd Component→Scriptsから作成したスクリプトを選択するとアタッチできます.
(Projectタブから作成したスクリプトをドラッグ&ドロップでも可能です.)
[SerializeField]を付けたフィールドやpublicなフィールドはUnityエディタのInspectorタブで値を変更することができます.
注意:Inspectorタブで値を変更すると,コード上の初期値とシーン実行時の初期値が異なってきます.
例えば,
[SerializeField] private int number = 0;
とコード上で定義されているとき,コードを眺めただけだとnumberの初期値は0ですが,このスクリプトをアタッチしたオブジェクトのInspectorタブで違う値に設定した場合,例えば5に設定したとすると,numberは5として実行されます.
また,numberをInspectorタブで5に設定した後,コードの方で
[SerializeField] private int number = 123;
と初期値を変更したとしても,シーン上のオブジェクトには反映されません(5のまま).numberの値は常にInspectorタブで見えているものが使われるので,コードを読む際には注意してください.
スクリプトについてのもう少し詳しい説明は公式マニュアルを参照してください.
Unityユーザーマニュアル/スクリプト:https://docs.unity3d.com/ja/2021.3/Manual/ScriptingSection.html
スクリプトリファレンスも参考になります.
Unityスクリプトリファレンス:https://docs.unity3d.com/ja/2021.3/ScriptReference/index.html