補足:クラスとプロパティについて
・クラスにはメソッドと似た仕掛けのプロパティを定義できる
・プロパティは属性という意味だが、C#では変数に見えるメソッドで、代入や利用にルールを盛り込める仕掛け
・例えば、身長に0以下の値が入って欲しくない場合に「public int bl;」とすると防げない
・そこで「public」を外して「int bl;」とすると外部から扱えなくなる
・これに「public int BL { set { bl = value; } }」とプロパティを書き加えてから
・ルールを加えると良い
public int BL { set { if (value > 0) {bl = value;} } } //プロパティBLの定義
・この書式がプロパティで、valueキーワードが代入値になる
・クラスにこれを加えると、外部からは「BL = 180;」で呼び出せる
・なお、プロパティには外部からの利用を可能にする「get」も記述できる。制限が必要なければ:
public int BL { get { return bl; } }」で良い
・よって、まとめるとプロパティの一般形は
public 型 プロパティ名 { set { 条件 { 変数 = value; } } get { return 変数; } }
例: public int BL { set { if (value > 0) {bl = value;} } get {return bl; } }
ミニ演習 mini133a
・Monsterクラスに身長の整数変数blと、これを扱うプロパティBodyLenを定義しよう ・プロパティBodyLen はsetで正の数のみに制限し、getは無制限とする ・mini133aクラスで、MonsterクラスのオブジェクトVeldraを生成しよう ・プロパティBodyLen を用いて身長に100をセットし、プロパティBodyLen を用いて出力しよう ・それから、プロパティBodyLen を用いて身長に-5をセットし、プロパティBodyLen を用いて出力しよう(変化しない)
ヒント(Monsterクラス)
class Monster {
int bl; //身長(外部からは利用不可)
public int BodyLen { //身長を扱うプロパティ(外部からは利用可)
set { if (value > 0) { bl = value; } } //代入は正の数のみ許可
get { return bl; } //利用は自由
}
}
ヒント(mini133aクラスのStartメソッドの内容)
Monster Veldra = new Monster(); //MonsterクラスのオブジェクトVeldraを生成 Veldra.BodyLen = 100; //プロパティ経由で代入(自動的にsetを実行) Debug.Log(Veldra.BodyLen); //プロパティ経由で利用(自動的にgetを実行) Veldra.BodyLen = -5; //プロパティ経由で代入(自動的にsetを実行)⇒blには代入されない Debug.Log(Veldra.BodyLen); //プロパティ経由で利用(自動的にgetを実行)⇒100のまま変わらない
作成例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class Monster { //モンスターを表すクラス
int bl; //身長(外部からは利用不可)
public int BodyLen { //身長を扱うプロパティ(外部からは利用可)
set { if (value > 0) { bl = value; } } //代入は正の数のみ許可
get { return bl; } //利用は自由
}
}
public class mini133a : MonoBehaviour {
void Start() {
Monster Veldra = new Monster(); //MonsterクラスのオブジェクトVeldraを生成
Veldra.BodyLen = 100; //プロパティ経由で代入(自動的にsetを実行)
Debug.Log(Veldra.BodyLen); //プロパティ経由で利用(自動的にgetを実行)
Veldra.BodyLen = -5; //プロパティ経由で代入(自動的にsetを実行)⇒blには代入されない
Debug.Log(Veldra.BodyLen); //プロパティ経由で利用(自動的にgetを実行)⇒100のまま変わらない
}
void Update() {
}
}
p.133(StartメソッドとUpdateメソッド)
・Unityが用意しているMonoBehaviourクラスを継承して、実行用のクラスを定義する仕掛けはC#の基本的な仕組みのまま ・しかし、MonoBehaviourクラスのもつStartメソッドとUpdateメソッドは、Unity独自の仕組みによって提供されており、 正式にはメソッドではなく、メッセージと呼ばれる仕組みになっている ・そのため、継承してメソッドを上書きするnewやoverrideの記述が不要になっている
p.134 プロジェクトを作成する
・Unityのバージョンアップにより変更されている ① Unity Hubで「新しいプロジェクト」 ②「2Dコア」を選び。プロジェクト名を入力しスクロールダウンして保存場所を入力 ③「作成」
p.135 スマートフォンの画面サイズに合わせる
・Unityのバージョンアップにより変更されている ・手順⑤の後で、「Scene」をクリックし、Ctrlキーを押しながらマウスホイールを回して中央の領域を適度に大きくする
提出:mini133a