i-school - コード練習1−基礎ー

◇スクリプト・テスト◇


 Unityで製作するゲームはプロジェクトと呼ばれます。
まずはプロジェクトを新規作成して、その中でスクリプト(コード)の練習をしましょう。


新しいプロジェクトを作成する


 UnityHubを起動し「新規作成」を選択します。(あるいはUnityエディター内のメニューバーより「File」→「New Project...」を選択します。)




 プロジェクトの新規作成ウインドウが開くので、Project nameに「ScriptTest」と入力し、
Locationにプロジェクトの保存場所を指定し(変更しなくても大丈夫です)、右下にある青い「作成」ボタンをクリックしてください。



 Unityエディターが起動します。
 

Scene(シーン)を保存する


 Unityエディターが起動したらScene(シーン)を保存します。シーンとは実際にゲーム製作の作業を行う部分のことです。

 Unityエディターの左上にあるメニューバーから「File」→「Save Scene As...」を選択してください。
Save Sceneウインドウが開くので、Save Asに「GameScene」と入力してから「Save」をクリックします。
ヒエラルキー内の一番上にあるシーン名が保存した[GameScene]という名前に変わります。



またProjectビューのAssetsフォルダ内にUnityアイコンの「GameScene」ファイルが追加されます。


ゲームオブジェクトを新しく作成する


 今回はスクリプトのテストを行うプロジェクトですが、Unityでスクリプトを実行するためには、
何らかのゲームオブジェクトにアタッチ(ゲームオブジェクトとスクリプトに結びつけること)する必要があります。

 そこでまず、ゲームオブジェクトを作ります。

 ヒエラルキービューで「Create」→「Create Empty」を選択して下さい。ヒエラルキービューにGameObjectができます。




C#スクリプトを新しく作成する


 Projectビュー内で右クリックをしてメニューを表示し、「Create」→「C# Script」を選択して下さい。
Assetsフォルダ内に「C#」と書かれたファイルが追加されます。生成されたファイル名「NewBehaviourScript」を「Test」に変更してから確定します。

 そのまま「Test」スクリプトをドラッグし、「GameObject」上にドロップしてください。これでアタッチされます。

 ヒエラルキーのGameObjectを選択して、インスペクターを確認します。
Tranformコンポーネントの下に Test スクリプトがアタッチされていれば成功です。


Testスクリプトを開く


 続いて、作成したTestスクリプトの中身を見てみます。
プロジェクトビューの「Test」ファイルをダブルクリックするとWindowsではVisual Studioが起動します。
ファイルの中身には、以下のようなスクリプトが自動的に生成されています。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {

    // Use this for initialization
    void Start () {
        
    }
        
    // Update is called once per frame
    void Update () {
        
    }
}

 作成されたスクリプトは「クラス」と呼ばれます。ここでは「Test」というクラスが生成されています。


スクリプトの構成


 スクリプト・ファイルの構成内容を順番に説明します。

using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

 これらはライブラリと呼ばれるもので、データを格納する型を扱うために行う宣言です。
C#ではいくつもの機能が、このようなライブラリとして用意されており
using 〜 という書式で宣言することでスクリプト内で利用できる状態になります。

 上記の2つはC#全般の機能、3つ目の using UnityEngine はUnity用に用意されたライブラリです。
データを格納する型については後ほど説明します。



  public class Test : MonoBehaviour
  { 
      // 処理を書く部分
  }
「public class Test : MonoBehaviour」でこのスクリプトがTestクラスであることを示しています。
この後に続く{ }内に、このTestクラスの機能を記述していくことになります。

 { と }で囲まれた箇所はブロックと呼びます。
{(括弧開き)だけ書いて }(括弧閉じ)を書き忘れたりするとエラーとなるので、
ブロックは必ず { と } で対になるようにしてください。(警告も出ます。)
スクリプト名とクラス名は同じでなくてはならない

 ということも覚えておいてください。



  void Start()
  {
   // ゲーム起動後に一度だけ実行する処理      
  }

 void Start()は「スタート関数」と呼び、void Start()に続く{ }の中には、ゲーム起動後、最初に一度だけ実行する処理を書きます。



  void Update()
  {
   // 毎フレーム実行する処理を書きます。     
  }

 void Update()は「アップデート関数」と呼び、void Update()に続く{ }の中には、毎フレーム実行する処理を書きます。



  // Use this for initialization
 
 スクリプト中の //で始まる行 はコメントと呼び、これ以降に書いた文字列はスクリプトの実行時には無視されます。

 これは1行単位でコメント扱いとなります。複数の行でコメントを残したい場合には、それぞれの行の先頭に // が必要になります。
コメントは、スクリプト中にメモを残したいときによく使います。


スクリプトの実行順


 ゲームはアニメなどの動画と同じように、1コマ1コマの静止画をパラパラ漫画の方式で高速に切り替えながら表示しています。

 この1コマ1コマの絵のことを【フレーム】と呼び、一秒間に表示される枚数をFPS(Frame Per Second)と呼びます。
スクリプト実行時、最初の1コマ目だけStart()内の処理を実行し、2コマ目以降からゲームの実行を終了するまではUpdate()内の処理を毎フレーム実行し続けます。

ゲーム実行、スクリプト起動
↓
Start()    (スクリプト起動時に最初に一度だけ実行)
↓
UpDate()   (スクリプト終了まで毎フレーム実行)

 このような流れになります。Start関数は1回しか処理されません。


スクリプトに処理を記述する


 それではまず、文字列を表示するスクリプトを書いてみましょう。Testスクリプトに、下記を追加してください。

using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {

    // Use this for initialization
    void Start () {
        //コンソールにHello, Worldと表示    ← 追加 ここから
        Debug.Log("Hello, World");              ← ここまで
    }
        
    // Update is called once per frame
    void Update () {      
        
    }
}



 ここではStart関数内にDebug.Log("Hello, World");というコードを追加しています。

 これは、Console(コンソール)ビューという、ゲーム内で処理されている内容を一覧表示するビュー内に、「Hello,world」という文字列を表示するという内容です。
Projectビューの隣にあるタブを押すことでConsoleビューを表示させることが出来ます。




 Debug.Log関数は、これに続く()内に書いた文字列をコンソールビューに表示します。
ここでは"Hello, World"という文字列を指定しています。

 なおスクリプトで文字列を使う場合には必ず " と " でくくる必要があります。


スクリプトの内容を保存する


 このスクリプトを保存します。スクリプトに記述した内容を保存することで反映されます。

 VisualStudio内のメニューバーより「すべて保存」を選択してください。VisualStudioは開いたままで大丈夫です。
あるいはショートカットキーを覚えて使ってください。 Shift + Ctrl + キーボードの S です。


Unityエディターを実行する


 保存したスクリプトの内容を確認します。

 Unityエディター上部の「実行ボタン(再生アイコン)」を押してください。
(スクリプトはその都度、保存してから実行してください。保存しないとゲーム内に反映されません。)

 エディター画面下部のProjectタブの横にあるConsole(コンソール)タブを押すと、コンソールビューに切り替わります。
ここでは複数行の実行結果を見ることができます。またエディターの最下部には、最後の実行結果が表示されます。

 Projectタブを押せば元のフォルダ表示に戻ります。

 実行を終了するためには、もう一度実行ボタンをクリックします。

https://gyazo.com/ed3b1b3ca994882a09940449c64c8cc8



 無事に実行できれば、コンソールビューに上記が表示されます。


エラーが表示された場合


 もしもスクリプトにエラーがある場合には、下記のような表示が出ます。





 スクリプトの間違えている箇所を調べるためには、Unityエディターの最下部のコンソール(またはコンソールビュー)を確認します。
コンソールの赤い文字をダブルクリックすると、エラーが出ているスクリプトの箇所に自動的にジャンプできます。



(VisualStudioが軌道していない場合には、自動的に立ち上がります。)

 エラーの文章自体にも、どんな間違いをしているのか書いてありますので、エラーが出てしまっても修正して実行できるようにします。