今回は、Unityのゲーム制作で必要になってくるプログラムの基礎を、初心者の方向けに解説していきます! 基本的なゲームを作れるまでを数回に分けて解説しますので、プログラムの知識がない方におすすめです。
■C#スクリプト解説
→【Unity】スクリプト入門!C#の基礎解説
・【Unity】C#における変数の基礎を解説
・【Unity】C#の変数計算と配列
■インストール解説はこちらから
プロジェクトの準備
まず初めにサンプルプロジェクトを作ります。
今回はスクリプトをアタッチして使うための空のゲームオブジェクトを一つ準備したプロジェクトを作ります。
※アタッチについての詳しい説明は、前回の記事(【Unity】スクリプトのアタッチを解説)で行っていますので、わからない場合は確認してください!
作った直後のスクリプトの解説
では早速、C#スクリプトを作ってそれをVisual Studioで開いてみましょう。スクリプトはProjectタブで右クリックメニューを開くことで作れます。
作ったスクリプトは、ダブルクリックで開くことができると思います。Visual Studioが入っていれば問題なく開くはずです。
上の参考のようなものが開かれたと思います。これについてそれぞれの項目の解説と覚えるポイントについて説明していきます。
usingについて
まずは最初の1〜3行目にある「using」についての説明です。(※行の番号が表示されていない場合は公式サイトにある方法で表示切り替えを行うこともできます。)
いきなり謎のコードが並んでいるので少し戸惑うかもしれません。
最初にusingについて覚えるポイントを少し説明しておくと、ここは実は特に覚える必要がありません。お約束的に書くものだとだけ覚えればOKです。ただ、なんとなく知識として以下の内容を頭の片隅にでも置いておいてください。
「using」はプログラムを簡単に書くために準備されているものを使うための記述です。「using ○○○○」という部分は、その「○○○○にある便利機能を使う」ことを宣言しているものです。
試しに3行目にある「using UnityEngine」という部分を消してみます。
4行目に赤い波線(エラー)が出たのが確認できます。これは「using UnityEngine」が無くなることにより、MonoBehaviourという機能が使えなくなったことを表しています。
MonoBehaviourはUnityが用意している便利機能の塊で、これがあることにより1行でオブジェクトを回転させたりなどができるようになります。
つまり3行目のusing UnityEngineは「MonoBehaviour」という便利機能の塊を使うために書かれたものということになります。
また少し色がグレーになっているものと、しっかり白く表示されているものについての違いですが、これはスクリプトでその「using ○○○○」が使われているかどうかによって変わってきます。
今度は試しに「: MonoBehaviour」を消してみます。
3行目がグレーになったことを確認できると思います。これは「MonoBehaviour」が無くなることにより、using UnityEngineを使っている項目が無くなったために起こる現象です。
注意点として、1〜2行目についてはグレーになっていますが後々のことがあるので使っていないからといって消すことのないようにしてください。
■覚えるPOINT!
特に無し。ただし消さないこと。便利機能を使うためにお約束で書かれたものという認識でOK!
public class 名前 : MonoBehaviour
解説するコードの場所としては、5行目の「public class 名前 : MonoBehaviour」です。下の6行目にある「 { 」と18行目にある「 } 」も、このコードの一部だと思ってください。
それでは一つずつ確認していきます。
public
これは、他のコードからこのコードを確認できるようにするかを決めるための一文です。これがあるものは、他のコードからその存在を確認することができます。逆に存在を確認されたくない場合は「private」と書きます。
※ただしこの5行目の部分は、privateにして隠すとそもそもUnityから認識できるものが無くなってしまうため、変更ができないようになっています。
class
色々な中身(メソッドと言ったりする)が定義された、処理の一塊であることをコンピューターに伝えるための記述です。
プログラムコードを書く作業は、このクラスの中身を作っていく作業のことです。
名前
好きに付けることができる名前です。スクリプト作成時の名前がここに入ります。注意点として、日本語表記だとエラーが出るので必ず英語表記のものを作るようにしてください。
MonoBehaviour
先ほども少し触れましたが、これはUnityが用意してくれている便利機能を使うための記述です。このクラスで、MonoBehaviourを使えるようにするためにここに記載しています。
■覚えるPOINT!
・クラス(class)は処理をまとめた一つの塊。
・スクリプトをUnityで作る時につけた名前がクラスの名前になる。
「// コメント」
7行目と13行目にあるものはコメントという、プログラムに影響しないメモです。どのような動きをするものなのかをコメントで残しておくことができます。
特に時間が経つと、どんな動きをするものか忘れてしまうので、コードを書いたら細かくコメントを残すように心がけましょう。
コメントの書き方は以下のようなものがあります。
■1行のみのコメント
// ここがコメントになる
■複数行コメント
/* この囲まれた部分はコメントになる。 */
■覚えるPOINT!
・コメントはプログラムに影響しない。
・コメントの書き方は2種類。
メソッド(関数)について
クラスの中にある「void ○○○○()」の一つ一つを、メソッドと言ったり関数と言ったりします。
・呼び方はどちらが正しい?
どちらで呼べば良いのかという点については、一応メソッドという呼び方がC#では正しいようです。……ようです、という曖昧な言い方なのは、意外と関数という呼び方も多かったりするからです。
余談ですがプログラミング言語の一つであるC言語やその派生のC++から学習を始めた人は関数という呼び方が多い気がします。(ちなみに私もその一人なので、説明のなかで関数とよく書いたりします)
今回学んでいるC#は、オブジェクト指向(オブジェクトがどう動くかに着目した考え)の言語になります。そのオブジェクト指向における、操作を定義したものは「メソッド」と呼ばれるのが正しいようです。
とは言っても、広い意味ではメソッドも関数も同じようなものだと思いますので、色々と呼ばれ方があるという認識でいてください。(このブログでも呼び方がブレることがありますがお許しください!)
それぞれのメソッドについて説明します。
■void Start()
「 { 」から「 } 」までに書いた処理を、このコードが有効になった瞬間の最初の1フレームだけ実行する。
■void Update()
「 { 」から「 } 」までに書いた処理を、Start()が終わった後の毎フレーム実行する。
※フレームレート(英 fps:frames per second)について。
映像(動画)は、物凄い速さで多くのコマ(静止画)を切り替えることで動きを表現しています。フレームレート(fps)とは、その切り替えが1秒間の映像で何回起こるかを表したものです。ゲームの場合、60fps(1秒間に60回更新)や30fpsで動くものが多かったりします。
上の説明にある最初の1フレームというのは、60fpsの場合 1/60秒(約0.0167秒)目の更新というイメージです。また毎フレーム実行は、60fpsの場合1秒間に60回同じ処理が実行されることを表します。
■覚えるPOINT!
・最初の1フレームはvoid Start()が実行される
・その後毎フレームはvoid Update()が実行される
コンソールに文字を表示させてみよう!
ある程度基本の項目について理解できたら、次はサンプルコードを書いて動きを確認してみましょう!
まずはStartの下のかっこの中に「print(“好きな文字列” );」と入力して、「Ctr(macの場合command)+S」で上書き保存を行ってください。
次に動きの確認のためにUnityの画面を開き、作ったスクリプトを空のゲームオブジェクトにアタッチしてください。
アタッチの完了後はUnityの「再生マーク」を押してゲームを実行状態にし、画面下部のタブを「Console」に切り替えましょう!
問題なくコードが書けていれば先ほどの文字列がコンソールに表示されるはずです。
処理の解説
・print(“文字列”);
printは、コンソールに文字を表示させるためのものです。かっこ内にある「”」で囲まれた文字列をそのままコンソールに表示します。
処理がしっかり実行されているかなどを確認するために用いるものです。実際の製品でこのログは見れません。ちなみにprint(“<color=red>文字列</red>”);などと書くと、文字色を変えたりもできます。
同じくコンソールに文字を表示させる機能として「Debug.Log(“文字列”);」がありますが、好きな方を使ってください!
■覚えるPOINT!
・printでコンソールに文字表示ができる
・Debug.LogでもOK
・入力補助を使おう!
printなどの機能を使おうとした時、「pri」まで打ち込むと候補のトップにprintが表示されると思います。この時にTABキーを押すと残りの文字を入力してくれる機能があります。短い文字の時はそこまで重要ではないのですが、長い文字列の機能を使う時は意外と便利なので使ってみてください!
まとめ
今回はサンプルコードについて、それぞれの意味を解説しました。次回は、プログラムの基礎となる変数などについて解説していきます!
■C#スクリプト解説
→【Unity】スクリプト入門!C#の基礎解説
・【Unity】C#における変数の基礎を解説
・【Unity】C#の変数計算と配列
■インストール解説はこちらから