6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Unityで学ぶC#] 9 クラス

Last updated at Posted at 2017-03-04
1 / 19

クラスとは

一言でいうと設計図です.

クラスは主に2つの要素でできています.

  1. クラスの保持するデータ
  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 クラス名(型 変数名)
{
    初期化処理
}

初期化するためのパラメータをわたしたいときはこのようにします.詳しくは後で説明します.


実践


まずはクラスを作る

class1.gif


まずはクラスを作る

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がややこしい

Assembly-CSharp - 9 Class_Example9.cs - MonoDevelop-Unity.jpg 色のついた部分が対応しています. `this.name`がMonsterクラスのデータ. 青いnameが渡されたパラメータです.

これらは同じ名前である必要がなく,むしろ普通は別の名前にすると思いますが,
僕は名前をつけるのが面倒なので,同じ名前にしてしまっています.

public string name;
public Monster(string n){
    name = n; // これでも問題無し
}

設計図から実体を作る

new演算子を使うことで,実体を作ることができます.
インスタンスともいいます.
スクリーンショット 2017-03-05 0.31.46.png


とりあえず再生してみよう

Debug.Log(monster.name)
スクリーンショット 2017-03-05 0.34.47.png
スライムと表示されました.

何をしたのか?

まず「Monsterとはnameというパラメータを持っているものである」という定義をしました(クラスを作る)
その後、新しくスライムを生成しました。(new Monster("スライム"))
スライムに「君はMonsterだからあだ名monsterな!」とあだ名をつけました Monster monster = new Monster("スライム") (理解しやすいように無理やりこじつけています)
最後にmonsterの名前をLogに出力しました。


データの流れ

スクリーンショット 2017-03-05 0.31.46.jpg

.(ドット)の意味

スクリーンショット 2017-03-05 0.31.46-1.jpg

参考

備考

Unityでスクリプトを作成すると、クラス名の横に: MonoBehaviourとついたスクリプトができます。
これがついたクラスではコンストラクタは使いません。
なぜならMonoBehavourのついたスクリプトはnewを使って生成しないからです。


おわり

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?