【Unity入門】クラスを使ってみる

2021年10月10日

クラス

クラスとは設計図のようなものです。

クラスを使ってインスタンスを作ることで使えるようになります。

インスタンスはクラス(設計図)を基にして作った『実体』のことです。

例えば、動物クラスから『イヌ』や『ネコ』や『クマ』などのインスタンスを作って使えるようにするイメージです。

クラスには変数、定数、関数を書き込むことができます。

クラス内の変数のことを『メンバー変数』、関数のことを『メソッド』と呼びます。

クラスは

class クラス名
{
    メンバー変数1, メソッド1…      
}

と記述します。

インスタンスは

クラス名 インスタンス名 = new クラス名();

と記述します。

インスタンスを使うときは

インスタンス.メンバー変数
インスタンス.メソッド

と記述します。

実際に使ってみる

準備

それでは、クラスを作ってみましょう。

まずは、以前作成した、『C# Basics』というプロジェクトを開いてください。

『C# Basics』を開いたら、クラスを作るシーンを作りましょう。

Scenesフォルダの中に作成します。

ProjectウィンドウでScenesフォルダを選択しましょう。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので、『Scene』をクリックしましょう。

すると、Scenesフォルダの中に新しくSceneが作成されます。

Sceneの名前を『Class』に変更しておきましょう。

今回は『Class』の中でクラスを作りたいので、Sceneを移動します。

『Class』をダブルクリックしましょう。

すると、Sceceを移動することができます。

Hierarchyウィンドウを見ると、現在のSceneが『Class』に変わっていますね。

次にクラスを作るためのスクリプトを作っておきましょう。

Scriptsフォルダを選択してください。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので『C# Scripts』を選択します。

すると、新しくスクリプトが作成されます。

名前が確定してしまう前に『ClassScript』と変更します。

名前を変更したら、スクリプトを編集していきましょう。

ClassScriptをダブルクリックしてください。

すると、VIsual Studioが起動して、ClassScriptを編集できるようになります。

スクリプトはScene上にあるオブジェクトに追加することで呼び出されるので、適当に追加しておきましょう。

ClassScriptをMain Cameraにドラッグ&ドロップします。

すると、Main CameraにClassScriptが追加されます。

クラスを作ってみる

それでは、クラスを作っていきましょう。

今回は年齢と動物の種類を表す二つのメンバー変数と、動物が噛みつくメソッドを持ったクラスを作ってみましょう。

ClassScriptクラスの上に

class Animal
{
    public int age = 2;
    public string kind = “犬”;

    public void Bite()
    {
        Debug.Log($”{age}歳の{kind}が噛み付く”);
    }
}

と記述しましょう。

コードについて説明しておきます。

まず、クラスの名前をつける必要があるので、『Animal』と名前をつけます。

名前の表記方法は『アッパーキャメルケース』です。

アッパーキャメルケースというのは単語の先頭を大文字にする表記方法です。

例えば、『AnimalTall』というクラスがあった場合、アッパーキャメルケースだとAnimalの『A』とTallの『T』を大文字にするといった感じです。

次にクラスの中をみていきましょう。

クラスの中には二つのメンバー変数と

一つのメソッドがあります。

これらの先頭にはpublicがついています。

publicというのはアクセス修飾子と呼ばれるものです。

publicがついているものはインスタンスを作った時に、使うことができます。

アクセス修飾子については次章で扱います。

二つのメンバー変数と一つのメソッドについてそれぞれ見ていきましょう。

まず、メンバー変数は、年齢を表す『age』に整数の値『2』が格納されたものと

動物の種類を表す『kind』に文字列の値『犬』が格納されたものがあります。

メソッドは噛みつくことを表す『Bite』という名前で、

処理内容はageとkindを用いて、『age歳のkindが噛みつく』とコンソールに表示させるといったものです。

今回はageが『2』でkindが『犬』なのでメソッド『Bite』を使うとコンソールには『2歳の犬が噛みつく』と表示されるはずです。

作ったクラスAnimalを

ClassScriptというクラスで使ってみましょう。

クラスを使うにはクラスからインスタンスという実体を作る必要がありました。

インスタンスを作ってみましょう。

Start関数の中に

Animal dog = new Animal();

と記述しましょう。

コードについて説明しておきます。

まず、newの後ろに

クラス名()と記述することで、そのクラスのインスタンスを作ります。

今回はAnimal()としたので

Animalクラスのインスタンスを作ります。

作ったインスタンスはAnimal型の

変数dogに格納されます。

これでAnimalクラスを使ってインスタンスを作ることができました。

このインスタンスを使って、メンバー変数を取り出したり、メソッドを使ってみたりしましょう。

まずはageをコンソールに出力してみましょう。

インスタンスを作った記述の下に

Debug.Log(dog.age);

と記述しましょう。

コードの説明をすると、このdogというのは

作ったインスタンスのことです。

インスタンスに『 . 』をつけることで

インスタンスを作るのに使ったクラスのプロパティやメソッドを取り出すことができます。

今回はageとしたので、

dogインスタンスの基になったAnimalクラスのageというメンバー変数の

値を取得します。

ageの値は『2』なので

Debug.Log(dog.age);という記述により、

コンソールには『2』と出力されるはずです。

実際にそうなるのか再生して確かめてみましょう。

スクリプトを保存したら、Unityエディタに戻って、再生ボタンを押してください。

すると、予想通りコンソールには『2』と出力されます。

次に同じようにしてkindプロパティも表示させてみましょう。

やることは簡単でインスタンスの後ろのageを

kindに書き換えるだけです。

このように記述するとkindプロパティである『犬』が取り出され、

コンソールには『犬』と出力されるはずです。

スクリプトを保存したら、Unityエディタに戻って、再生ボタンを押してください。

すると予想通りコンソールには『犬』と出力されますね。

次にBiteメソッドを使ってみましょう。

dog.Bite();

と記述しましょう。

このように記述するとBiteメソッドを使うことができます。

Biteメソッドの中身はageとkindを用いてコンソールに文字列を出力する処理です。

今回はageが『2』で

kindが『犬』なので

コンソールには『2歳の犬が噛みつく』と出力されるはずです。

実際にそうなるのか再生して確認してみましょう。

スクリプトを保存して、Unityエディタへ戻り、再生ボタンを押しましょう。

すると、予想通りコンソールには『2歳の犬が噛み付く』と表示されますね。

このようにして、クラスを使います。