C#とUnityの関係
このコースでは、C#の基本文法を理解し、それがUnityのゲーム開発でどのように使われるかを順番に見ていきます。目標は、コードをただ写すのではなく、各行が何を意味し、Unityのどの機能とつながるのかを説明できるようになることです。
C#は何に使われる?
C#はデスクトップアプリケーション、Webサービス、業務システム、ゲームなどで使われる汎用プログラミング言語です。Unityでは、キャラクターの動き、ゲームのルール、UI、アイテム管理などをC#スクリプトで記述します。
UnityとC#の役割
- Unity:シーン管理、描画、物理演算、入力、音声、UIなどを提供するゲームエンジン
- C#:ゲーム内のルールやオブジェクトの振る舞いを記述する言語
- GameObject:シーンに配置するオブジェクト
- Component:GameObjectに追加して機能を与える部品
- MonoBehaviour:GameObjectに追加するスクリプトの基礎となるクラス
Unityはゲームの実行環境や各種機能を提供し、C#はそれらをどう組み合わせるかを記述します。C#だけでUnityの画面や物理演算を実装するのではなく、UnityのAPIをC#から利用する関係です。
最初のC#プログラム
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello, Unity!");
}
}
このプログラムをコンソールアプリケーションとして実行すると、次の1行が表示されます。
Hello, Unity!
using System;:Consoleなどを含むSystem名前空間を利用できるようにします。class Program:Programというクラスを宣言します。static void Main():コンソールアプリケーションの開始地点です。Console.WriteLine(...):値を標準出力へ表示し、最後に改行します。
コンソールアプリとUnityスクリプトの違い
上のMainメソッドはコンソールアプリケーションの開始地点です。一方、Unityでは通常Mainを自分で用意しません。UnityエンジンがシーンやGameObjectを初期化し、MonoBehaviourのAwake、Start、Updateなどを決められたタイミングで呼び出します。Unityでログを出すときは、Console.WriteLineではなく、一般にDebug.Logを使います。
using UnityEngine;
public class HelloUnity : MonoBehaviour
{
void Start()
{
Debug.Log("Hello, Unity!");
}
}
このスクリプトをGameObjectに追加して再生すると、Startが呼ばれ、UnityのConsoleにログが表示されます。MainとStartは似た開始処理に見えますが、呼び出し元と役割が異なります。
この章の要点
C#は処理を記述する言語、Unityはゲームを動かすエンジンです。コンソールアプリではMainから処理が始まり、Unityではエンジンがライフサイクルに沿ってスクリプトのメソッドを呼び出します。次章から、値を変数に保存して扱う方法を見ていきます。