今回やること
- Unityの基本原理・操作方法を学ぶ
- プログラムファイルの作り方を学ぶ
- プログラムの動かし方を学ぶ
- 変数の使い方を学ぶ
1.Unityの基本原理・操作方法を学ぶ
Unityで作られるゲームに出てくるものは、全てが「GameObject」というカテゴリで表されます。
上で示してるUIとかブロックとかキャラの画像は一つ一つが異なるGameObjectです。背景もGameObjectです。
そのGameObjectが入っている空間をSceneといいます。
Unityでは、基本的にタイトル画面やゲーム内容などの異なる場面をSceneとして区切り、それぞれのSceneの中にそのSceneのためのGameObjectを追加していくことでゲームを作ります。
これを踏まえて、UnityEditorの画面を見てみましょう。
①はシーンビューです。
現在開いているSceneにどのようにオブジェクトが配置されているかを確認できます。
シーンビュー上でオブジェクトをクリックすると直接動かしたり回転させたりすることもできます。
左上のボタンでオブジェクトの操作方法を変えられます。(位置の移動、回転など)
こっちのタブはゲームのテストプレイ画面です。ゲームをテストプレイするときに、実機ではどのように表示されるかを確認することができます。
②はヒエラルキーです。
現在Scene上にあるオブジェクトがリストアップして表示されます。
シーンビュー上でオブジェクトをクリックしたり、ヒエラルキー上オブジェクトでクリックして選択したりすると、③のインスペクタウィンドウでそのオブジェクトの情報が表示されます。
ここで補足説明すると、オブジェクトはそのままだと何の機能もありません。
オブジェクトに機能を追加するのがコンポーネントというものです。
当たり判定を追加するコンポーネントや物理演算を実装するコンポーネントなどがあるので、それをオブジェクトに追加することでオブジェクトはゲーム上で動くようになります。
④はプロジェクトです。
Unityプロジェクトを作成するとパソコンのどこかにプロジェクト用のファイルやらデータやらが作成されるのですが、このウィンドウではそのファイル内の情報を直接確認できます。
こっちのタブはコンソールです。ゲームの実行やらなんやらでエラーが起きたり何かデータが表示されるときに、ここに表示されます。
2.プログラムファイルの作り方を学ぶ
ざっくりと説明したところで、さっそくプログラムファイルを作ってみましょう。
先ほどコンポーネントというものについて説明しましたが、これは自作することができます。
専用の書き方をしたC#プログラムファイルを作成するとUnity上で一種のコンポーネントとして扱うことができるので、これをオブジェクトに追加して自分の思い通りに操作することができるのです。
まずはプログラムファイルを入れるフォルダを作りましょう。プロジェクトウィンドウ上で右クリック→Create→Folderを選択すると作れます。 フォルダの名前は自由に決めましょう(この講座上ではScriptとしました)。
※注意! フォルダの名前は半角英数字・記号のみにしてください! 日本語を使ったりすると結構な確率でUnityがバグります
そしたら、試しに一つプログラムファイルを作りましょう。プロジェクトウィンドウ上で右クリック→Create→Scripting→MonoBehaviour Scriptを選択すると作れます。
プログラムファイルの名前は半角英数字のみ、かつ初めの文字は大文字にすることをお勧めします。
これはUnityでゲームを作るうえでの業界の決まりのようなものです。守らなくてもエラーが起こるという訳ではありませんが、標準の書き方で統一することで今後チーム制作や会社でプログラムを書くときとかに円滑に物事を進められたりします(今回はTestScriptとしました)。
これでプログライムファイルが完成しました。早速ダブルクリックで開いてみましょう。
これがUnityで最もよく使うプログラムのテンプレートです。基本的にこれを改造してプログラムを書いていくことになります。
このStart(){...}とUpdate(){...}はUnityでつかわれる特殊なものです。{}内にプログラムを書くと、Startに書いたものはプログラムの適用されたオブジェクトの開始時点で一度だけ実行されます。Updateに書いたものは毎フレーム1回実行されます。
3.プログラムの動かし方を学ぶ
それでは、先ほど作ったファイルにこのようにプログラムを改造してください。
このプログラム上ではTestScriptとなっていますが、本来ここには皆さんが作ったプログラムファイルのファイル名が入っています。コピペなどする際にここまで書き換えないようにしてください。
また、""内の文字以外では絶対全角文字・日本語などを使わずに半角英数字・記号のみにしてください。間違えると必ずエラーが起こります。改行などもプログラムにとって一つ一つかなり重要な意味を持つので、殆どそっくりそのまま書くことをお勧めします。
using UnityEngine;
public class TestScript : MonoBehaviour
{
void Start()
{
Debug.Log("Hello World!");
}
void Update()
{
}
}
このDebug.Log("")とは、""内に書かれた文章をコンソールに表示するものです。そしてこの後ろについている;(セミコロン)はプログラムの区切りを表す記号のようなものです。絶対に忘れないようにしましょう。
何もエラーがなさそうだったら、これをCtrl+sで保存して...
ヒエラルキー上で右クリック→Create Emptyで空のGameObjectを作りましょう。
作った空のオブジェクトをヒエラルキー上でクリックして選択して、ここに作ったプログラムファイルをドラッグ&ドロップして追加して...
テストプレイボタンを押しましょう。
すると、コンソールに書いた文章が出てきました。
初めに実行されるStart内に書いたので、テストプレイ時にコンソールに表示されたわけですね。
とはいっても、これからプログラムのいろいろな機能を試すのにいちいちテストプレイを押してたら面倒です。 というわけで、プログラムを改造しましょう。
以下のようにプログラムを追加してみてください。このFunctionの部分はプログライムファイルの名前と同じルールで決めましょう。
csharpusing UnityEngine;
public class TestScript : MonoBehaviour
{
void Start()
{
Debug.Log("Hello World!");
}
private void Function()
{
}
void Update()
{
}
}
そして、このように書き換えて...(この[ContextMenu("~")]の中身も自由でいいです)
using UnityEngine;
public class TestScript : MonoBehaviour
{
void Start()
{
Function();
}
[ContextMenu("Function")]
private void Function()
{
Debug.Log("Hello World!");
}
void Update()
{
}
}
これで「関数」というものが完成しました。関数とは private void 関数名(){...}という記法で描くものです。 関数とは、プログラムを区分けする方法です。
プレイヤーを動かすプログラム、攻撃するプログラムなど...機能が違うものをそれぞれ別の関数にしてまとめるものです。
書き方から分かる通り、Start,Updateも関数の一種です。これはUnityが用意した特殊な関数で、この名前の関数は先ほど言った条件でUnityが勝手に実行するようになります。
この状態で保存して... このままテストプレイしてもStart内に「関数名();」と書いているのでDebug.Log()は実行されるのですが、もう一つやり方を追加しました。
オブジェクトのインスペクタから、先ほどのプログラムを右クリックしてください。 そうすると、[ContextMenu("~")]の中に書いた名前が出てきます。これを押すと...
関数が実行されました。
[ContextMenu("~")]と上に書いた関数は、エディタ上でいつでも実行することができます。関数内を編集するたびに、この機能で素早くプログラムの動作を確認できるわけですね。
4.変数の使い方を学ぶ
準備もできたところで、いろいろ書いていきます。
このように改造してください。
using UnityEngine;
public class TestScript : MonoBehaviour
{
void Start()
{
Function();
}
[ContextMenu("Function")]
private void Function()
{
int a = 100;
Debug.Log(a);
Debug.Log(a + 2);
Debug.Log(a - 2);
Debug.Log(a * 2);
Debug.Log(a / 2);
Debug.Log(a % 3);
string b = "文字列です";
Debug.Log(b);
}
void Update()
{
}
}
これを実行すると...
となりました。
int a = 100;という記法を「変数の宣言」といいます。「変数の型 変数名 = 初期値」という意味です。
型とは変数の種類のことです。主な型は以下のようになっています。
| 型の名前 | 意味 |
|---|---|
| int | 整数 |
| float | 最大 6 ~ 9 桁の小数 |
| double | 最大 15 ~ 17 桁の小数 |
| string | 文字列 |
| bool | 真か偽か |
今回の場合、int(整数)を代入できる変数aを作って、初めにそこに100を代入したとなるわけです。
ちなみに、float型の変数に代入するときは float 変数名 = 1.5f というように数値の最後にfとつけてください。
これは、最後にfが付いていない少数はdoubleと認識されるためです。
そして、今回のDebug.Log()に""が付いていないのにも意味があります。
これは、""の中に書いた文字列はstringと認識されるためです。例えばDebug.Log("a + 100")と書くと、変数aと100の足し算の結果ではなく「a + 100」という文章が出力されます。
変数や数字は計算ができます。以下のような意味になります。
| 記号 | 意味 |
|---|---|
| + | 足し算 |
| - | 引き算 |
| * | 掛け算 |
| / | 割り算 |
| % | 割り算のあまり |
今度はこのように書いてみましょう。
using UnityEngine;
public class TestScript : MonoBehaviour
{
void Start()
{
Function();
}
[ContextMenu("Function")]
private void Function()
{
int a = 100 + 50;
Debug.Log(a);
a += 10;
Debug.Log(a);
string b = "文字列も" + "足し算できる";
Debug.Log(b);
}
void Update()
{
}
}
これを実行すると...
となります。
これは変数の宣言に計算式を使ったものです。
そして、文字列(string)も足し算ができます。引き算など他の操作はできません。
基本的な型やら操作方法を説明したので、今日はここらへんで終わります、 お疲れ様でした~
