この記事はUnityの基本的な使い方を解説するシリーズの一つで、今回はC#スクリプトの概要について詳しくご説明します。
C#スクリプトとは?
Unityでは「C#」というプログラミング言語を使ってゲームオブジェクトを制御することができます。そしてその制御のしかたを書いたファイルがC#スクリプトです。
C#スクリプトはコンポーネントとしてゲームオブジェクトにアタッチできます。つまり、C#スクリプトを作るということは新しいコンポーネントを自作するのと同じようなものです。この機能があるおかげでUnityではC#の知識があればほぼ何でもできてしまうためとても便利です。
このようにC#はUnityにおいてとても大きな役割を果たすので、Untiyを使いこなすならC#も一緒に勉強しておく必要があります。プログラミング言語を使う、というと難しそうに聞こえるかもしれませんが、Unityでゲームを作る分にはそれほど多くの知識は必要ないのであまり身構える必要はありません。少しずつモノにしていきましょう。
なお当サイトにはC#プログラミングの基本を解説しているカテゴリもありますので、C#言語はまだよく分からないなぁという方は参考になさってください。
余談:UnityのC#は「普通のC#」と違うって本当?
ちなみに余談なのですが、ネット上の情報を見ていると「UnityのC#は普通のC#とは違う」というようなことが書かれていることがあります。しかしハッキリ言ってこのような情報はデマに近いです。
というのもUnityで扱えるC#言語は文法的にはC#そのものだからです。したがってUnityのC#は普通のC#とは何ら違いがありません。
まあUnityのC#スクリプトでは独自に用意されているクラスや関数を多用するので、素人が見たらその辺が「普通のC#と違う」という印象を受けるのかも…?といったところですね。いずれにしても妙な情報に惑わされないようにしたいものです。
C#スクリプトの作り方
ではここでC#スクリプトの作り方をご説明しておきます。といってもやり方は簡単で、プロジェクトウィンドウの何もないところで右クリック→「作成」→「C#スクリプト」を選択するだけです。
そうすると次のような内容のC#スクリプトが作られます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } }
MonoBehaviourというクラスを継承したクラスが自動的に作られています。MonoBehaviourとはC#スクリプトをUnity上でコンポーネントとして扱えるようにする基底クラスです。このクラスを継承していないとC#スクリプトをゲームオブジェクトにアタッチすることができません。
クラスの内容を見てみると、最初からStart関数とUpdate関数が書かれていますね。ただしこれらの関数は必ずしも必要というわけではないので、使わなければ消してしまっても構いません(※というか、使わない場合は消した方がゲームの動作がわずかに速くなります)。
なお作ったC#スクリプトをゲームオブジェクトにアタッチするには、ゲームオブジェクトをインスペクターで表示しておき、そこにC#スクリプトをドラッグ&ドロップすればOKです。
MonoBehaviourを継承したクラスを作るときの注意点
最後に「MonoBehaviourを継承したクラス」を作るときの注意点を一つご紹介しておきます。それは「C#スクリプトのファイル名」と「クラス名」を必ず一致させておく必要がある、ということです。
もしC#スクリプトのファイル名とクラス名が違っている場合は下記のような警告文が出て、C#スクリプトをゲームオブジェクトにアタッチできなくなってしまいます。
初心者のうちは操作ミスなどで両者の名前を変えてしまうことがあるため注意しましょう。なお、もしこの警告が出ても名前を一致させれば問題なく動くようになります。
おわりに
以上、Unityを使ったゲーム開発では欠かせないC#スクリプトの概要についてご説明しました。
Unityでゲームを開発するにはUnity本体の使い方だけでなく、C#プログラミングのやり方も覚えないといけないのでなかなか大変ではありますが、その分自由度も高いので大いにやりがいがあります。ぜひ焦らずじっくりと学習を進めていただき、両者をしっかりと身につけて頂ければと思います。