クラスとは
一言でいうと設計図です.
クラスは主に2つの要素でできています.
- クラスの保持するデータ
- データを処理するコード
一旦説明
後ほど「実践」で一からクラスの作り方を示すので序盤は流し読みしてください.
モンスターのクラスを作ります.
モンスターは名前を持っています.
クラスのサンプル
このように作ることができます.
public class Monster
{
public string name;
public Monster(string name){
this.name = name;
}
}
サンプルの解説
public class Monster
{
// クラスの中身
}
class
という単語がある行の次にある{}がクラスの範囲を示しています.
public class クラス名
{
// クラスの中身
}
サンプルの解説
public string name; // クラスが保持するデータ
public Monster(string name){ // クラスの初期化処理
this.name = name;
}
上のname
はモンスターの持つデータであり,名前を示す部分です.
下の部分はコンストラクタといい,データを初期化するために使います.
public Monster(string name){
this.name = name;
}
コンストラクタの書き方は関数の帰り値なし、名前がクラス名と同じバージョン
いうと少しわかりやすいでしょうか..?
コンストラクタ
public クラス名()
{
}
初期化するパラメータがないときはこのように中には何も書きません.省略も可能です。
コンストラクタ
public クラス名(型 変数名)
{
初期化処理
}
初期化するためのパラメータをわたしたいときはこのようにします.詳しくは後で説明します.
実践
まずはクラスを作る
まずはクラスを作る
public class Monster
{
}
public class Example9 : MonoBehaviour {
void Start () {
}
}
データとコンストラクタを書く
public class Monster
{
public string name;
public Monster(string name){
this.name = name;
}
}
public class Example9 : MonoBehaviour {
void Start () {
}
}
nameがややこしい
色のついた部分が対応しています. `this.name`がMonsterクラスのデータ. 青いnameが渡されたパラメータです.これらは同じ名前である必要がなく,むしろ普通は別の名前にすると思いますが,
僕は名前をつけるのが面倒なので,同じ名前にしてしまっています.
public string name;
public Monster(string n){
name = n; // これでも問題無し
}
設計図から実体を作る
new演算子を使うことで,実体を作ることができます.
インスタンスともいいます.
とりあえず再生してみよう
Debug.Log(monster.name)
で
スライムと表示されました.
何をしたのか?
まず「Monsterとはnameというパラメータを持っているものである」という定義をしました(クラスを作る)
その後、新しくスライムを生成しました。(new Monster("スライム"))
スライムに「君はMonsterだからあだ名monsterな!」とあだ名をつけました Monster monster = new Monster("スライム")
(理解しやすいように無理やりこじつけています)
最後にmonsterの名前をLogに出力しました。
データの流れ
.(ドット)の意味
参考
備考
Unityでスクリプトを作成すると、クラス名の横に: MonoBehaviour
とついたスクリプトができます。
これがついたクラスではコンストラクタは使いません。
なぜならMonoBehavourのついたスクリプトはnewを使って生成しないからです。