Unityでのオブジェクト指向学習サンプル(レジ)
スーパーのレジシステムをUnityでシミュレートして、オブジェクト指向のメリットをみていきましょう
オブジェクト指向の初学では、オブジェクト指向の書き方も大切ですが、まず、何がメリットなのか、なぜ使うのか、自分が理解しやすい例えで学習しているかに着目して進めるといいでしょう
無闇に時間をかけるより、イメージを掴むように心がけましょう
実行結果
最初から画面上にある、りんごとお肉はオブジェクト(インスタンス)です
実行後に作成されるお客とバナナとレジもオブジェクトですが、インスタンス作成命令によってインスタンス化されています
実行中に商品を追加したい時
CreateItem(商品名, 値段, 画像, 場所)というフォーマットを考えてみました
このパターンでコード行を追加すると商品が場面に増えていきます
レジの作成はどうなってるのか?
Unityでは場面状のオブジェクトの作成はエンジン側に任せることになっています(Instantiateメソッドを呼び出す)
・・・regPrefabとは、どのようなオブジェクトを作るかを示しています(今のところは、クラスのようなものと考えてください)
イメージ

クラス図
上記のイメージを図式で表したものになります
イラストはありませんが、各クラス名、属性名(フィールド名)、振る舞い名(メソッド名)が記されています
四角形は3段に分かれている上段がクラス名(©️はクラスを表します)、中段が属性、下段が振る舞いを表しています
メソッドの()内は引数になります

コード
C#の初学であれば、次のポイントに注意して確認してください
クラスは中を2つの部分に分けて分析してみます
属性(データ、フィールドともいいます)と振る舞い(動作の部分でメソッドや関数とも言います)の2つです
メソッドは、ブロック内を全て理解することを目的にせず、メソッド名から何の動作をさせようとしているのかを分析対象とします
Item.cs
商品クラスになります

属性
商品名と価格の2つで考えます
labelは表示用ですが、今回は考えなくていいでしょう
振る舞い
商品名と価格を表示するのみになります
Customer.cs
お客クラスになります

属性
お客様名と複数の商品の2つで考えます
振る舞い
インスタンス作成時名前を登録すると購入するの2つになります
Reg.cs
レジクラスになります

属性
ありません
レシートが記されていますが、表示用のため今回は考えなくていいでしょう
振る舞い
レシートを表示するのみになります
RegSystem.cs
レジのシステム全体をコントロールするクラスになります

属性
Unity特有のPrefab(プレファブ)を使っているため、理解が及ばないかもしれません
C#でのクラス(いくつかのクラスを合わせたもの)と考えるのみでいいでしょう
お客様型の変数の宣言と商品の変数の宣言、レジの変数の宣言があります
振る舞い
スタートメソッド(Startメソッド)からコードが始まります
ここでは、お客様の山田さんの作成、レジの作成、商品の登録を行なっています
また、複数の商品が簡単に登録できるように、商品の作成はメソッドとして分割しています
まとめることで重複したコードを作成することを防げます(処理の共通化、保守性の向上)
その他、採用している機能(参考)
難易度が上がるため、詳細は今後の学習に委ねるとして、次のような機能も使っています
イベント
お客を移動させて、商品やレジと接触させています
接触する(当たり判定とも言います)時に実行されるメソッドを登録できる機能を使っています
お客が商品に接触した時
お客クラスの商品購入メソッドが実行されるように登録されています
お客がレジに接触した時
レジクラスのレシート表示処理メソッドが実行されるように登録されています
ディスカッション
コメント一覧
まだ、コメントがありません