講義メモ 後半

補足:クラスとプロパティについて

・クラスにはメソッドと似た仕掛けのプロパティを定義できる
・プロパティは属性という意味だが、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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です