P1-X05

【Unity】インスタンス化とWhile文

今日はインスタンスとはなにかクラスとはなにかについて勉強していいこう!!

1

インスタンスとクラスとは?

ここではまずクラス、インスタンス、オブジェクトとはなに?っということについて学びます。

【クラス】

クラスはプログラミングの中味そのものです。それ自体だけではゲーム上でなにかすることはできません。

【インスタンス】

インスタンスはクラスを実際に使える状態にしたもの(インスタンス化)です。インスタンス化して初めてゲーム上でプログラムの内容を実行できるといってもいいでしょう。

クラスとインスタンスは車の設計図と実際にできた車で例えることができます。

車の設計図はクラス

実際に作られ、使える状態の車をインスタンス

2

オブジェクトって?

UNITYの場合、オブジェクトという言葉を頻繁に使うとおもいます。ゲーム上にある多くのものはゲームオブジェクトとしてインスタンス化されているからです。

通常オブジェクトというとクラス、インスタンスそのどちらも指すことができます。

3
インスタンス化の方法

ここではインスタンス化の一つの方法を学んでいきます。課題のUNITYファイルを起動しましょう。すると図のようなフィールドが現れると思います。これは自分で作成してもかまいません。

【準備】プレファブの作成

Scene上にあるものは自動でインスタンス化されていますが、プログラムから新しいオブジェクト(インスタンス)を出現させるにはプレファブをインスタンス化する必要があります

そのためにまず、プレファブを作って見ましょう。

1.まず、Hierarchy上にCubeなどプログラムから生成したいGameObjectをCreateします。

2.インスタンス化と直接関係ありませんが、床で止まるようにRigidbodyを使います。

スクリプトファイルを作り以下のコードを記入してみよう。

GameObject CubeOBJ = Instantiate(Cube) as GameObject;

でプレファブをプログラム上からSCENE上に出現させることが可能だ。

1.まずStart()内に書いてみよう

2.その後Updata()内に書いてみよう

<script src="https://gist.github.com/hulmoHub/0660420fdd217fd67ddbc82315a1a39b.js"></script>

課題1.Start()内にループ文(for文)を追加して、いくつかのプレファブを何個か連続で出してみよう。※変数で何回ループさせるかをコントロールする必要がある。

例)

for(int i = 0; i < 変数; i++)

{

GameObject CubeOBJ = Instantiate(Cube) as GameObject;

}

 ——————————————-

課題2.While文を追加して、いくつかのプレファブを何個か連続で出してみよう。※変数で何回ループさせるかをコントロールする必要がある。

例)

while(変数 < 数字(変数でも可)) {}

 ——————————————-

課題3.Do While文を追加して、いくつかのプレファブを何個か連続で出してみよう。※変数で何回ループさせるかをコントロールする必要がある。

例)

 do
        {
            処理をここに記入
            
        }while(変数 < 数字(変数でも可));

【参考】

●While(条件)とDo While(条件)の違い

<While文>

Whileは条件が合っている(真:true)の間のみ処理がループされる

<Do While文>

Do Whileははじめ一回は必ず処理が実行され、そのご条件があっている(真:true)の間のみ処理がループされる

下のリンク(タワーディフェンス1)Shooting.csを参考にしてインスタンス化したプレファブを勢いよく飛ばしてみよう。玉を飛ばしているコードを見つけて参考にしよう。