Unity オブジェクトのプレハブ化と時間毎に増やしてみよう。 Unity学習①
今回は、オブジェクトのプレハブ化の方法と、
時間ごとにオブジェクトを増やしていく方法の説明になります
※動画での説明がいい方は下記動画を参考にしてください。ブログ記事での説明がいい方はそのまま読み進めてください。
オブジェクトのプレハブ化と時間毎に増やしてみよう!
このブログは実際にやってみて、本を実際に買ってみても
上手く行かないで調べて自分なりに記述しています。
まず、Unityのダウンロードが出来ていない人は下記事を参考に
して下さい。
phoenix9056.hatenablog.com
それではやっていきましょう!
※プロジェクトは3Dで行なっていきます。①の +ボタンを押して、次に②のGameObjectを選択します。
③のPlaneを選択して地面を作っていきましょう。
地面がないと新しく作ったオブジェクトに重力をつけたときにそのまま
落下してしまいます。
そのまま同じような手順で+からGameObjectを選択して、最後にCubeを選択。
Cubeを作成します。
多分ですが上記の画像のように地面にCubeが突き刺さっていると思うので
Scene画面のCubeから伸びている黄色のような緑のような矢印をドラッグして
地面よりも上の方に出してあげてください。
Cubeが白くて少し見えづらいですね...
という事でCubeに色をつけてあげましょう。
Hierarchyにある①のDirectional Lightを選択して②のColorを選択
そうすると色を選択する事ができるので、③で色の選択④で色の濃さを
好きな色に変えてみてください。
※④で白色の部分を選択していると③で色を変更しても白色のままなので
注意してください。
色の変更の仕方はもう一つあるのでそちらの説明もしていきます。
まず、Project内の自分が分かりやすい所で、
右クリック⇨Create⇨Materialをクリックして①のMaterialを作成します。
名前は自分が好きな名前をつけてください。
次に、Inspector内にあるAlbedoの②の部分をクリックして、
③のColorが選択出来るので好きな色に変更しましょう。
最後に、①のMaterialをドラッグして④の色を変えたい
オブジェクトにドロップします。
そうすると⑤の様にオブジェクトの色が変更されます。
次にCubeにRigidbodyと言う物理的な移動と回転を加えるコンポーネント(構成要素)
を追加していきます。
Hierarchy内にある①のCubeを選択して②のinspectorを一番下までスクロールしてください。
そうすると一番下に③のAdd Componentがあるのでそれをクリック。
すると次のように検索が出来る画面が出てきます。
検索窓にRigidbodyと選択して下に出てきたRigidbodyを選択すると
CubeにRigidbodyのコンポーネントが追加されます。
これで物理的な移動、動作、回転ができるようになりました。
次にGameObjectをプレハブ化していきます。
GameObjectを増やすのに一回ずつ作成して行くのは大変です。
そんな時GameObjectをプレハブ化する事によってプログラム(これから作って行くスクリプト)で
呼び出して自働で生成出来るようにします。
プレハブ化するには、HierarchyにあるCubeをマウスでドラッグしながら
Projectの中にあるAssetsの下まで持っていきます。
そうするとAssetsの下に青い棒が表示されるのでそうしたらそのままドロップしてください。
HierarchyのCubeが青くなっていたらプレハブ化完了です。
そうしたら!!GameObjectを増やすプログラム(スクリプト)を作っていきます
※今回は1秒毎に5mの高さにCubeを生成して100個作られたら終わりというスクリプトを作ります。
もしいらない部分があればそこだけ消せばいいですし、時間や個数なんか変えてみても面白いです。
まず、スクリプトをいれる箱のようなものを作っていきます。
また同じようにHierarchyの+をクリックして今度はCreate EmptyをクリックしてGameObjectを作成します。
①をクリックして好きな名前に変えてみてください。
今回はGameManagerと言う名前にしてみました。
次にInspector内の②のAdd Componentをクリックして検索窓に何も無い状態で下にスクロールします。
すると、New scriptがあるのでそれをクリック。
検索窓で検索してもいいです。
Nameを自分で決めても構いません。
ただ慣れていない人は同じ名前で作成してください。
今回はDropCubeとつけます。
そして、Create and Addをクリック。
するとProjectのAssets内にDropCubeという名前のスクリプトが作られるので
それをダブルクリックします。
すると次の画面になります。
これは、Unityをインストールしたときに、VisualStudioというUnityのScript入力に最適な
アプリケーションがインストールされていた場合に起動します。
もしVisualStudioがインストールされていなければインストールが必要です。
インストールと使用手順は下記記事より。
phoenix9056.hatenablog.com
スクリプトを削除してコピー&ペーストするか
次の記述に書き直してください。
//Unity Engineと言うライブラリを使います。 using UnityEngine; public class DropCube : MonoBehaviour { //MonoBehaviourを継承したDropCubeというクラスを定義します。 public GameObject MyCube; //インスペクタでプレハブを指定出来る項目を作る。MyCubeは自分で決めてもいい名前。 //void DropOne で書く名前は同じにしてください。 private int CubeCount = 0; //このスクリプトの中だけでも参照出来る整数のCubeCountと言う変数の定義。 //CubeCountの部分は変数名であり自分で決める事が出来ます。 //void DropOneに書く名前は同じにしてください。 // Start is called before the first frame update void Start() { //Start、始まったら以下を実行します。 InvokeRepeating("DropOne", 2f, 1f); //始まって2秒経ったらDropOne関数を呼び出してそれ以降は1秒毎に呼び出します。 } void DropOne() { //DoropOneが呼ばれたら以下を実行。これが関数になります。 CubeCount++; //CubeCountの値を1つ追加 // Cubeプレハブを元に、インスタンスを生成、 Instantiate(MyCube, new Vector3(0.0f, 5.0f, 0.0f), Quaternion.identity); if (CubeCount == 100) { //100こ生成したら終わります。 CancelInvoke(); } } }
こんな感じで作られていると思います。
正直本買っても上手く行かなかったから
スクリプト訂正してあります。
実際に動いている所。
ご視聴ありがとうございました!
よければ動画の方もご覧ください!
関連記事
※初心者に向けた記事のカテゴリは下記リンクから参考にしてみてください。
www.unityprogram.info
※オススメの学習本は下記カテゴリより。実際に使っている物を紹介しています。
www.unityprogram.info
※Unityを学習していきたい方は下記リンクより、少し内容がめんどくさくなってきます。
www.unityprogram.info
※オススメのアセットの紹介は下記リンクを参考にしてください。きっと気に入るアセットがあるはずです。
www.unityprogram.info
※本格的に3Dを作っていきたいよ!って方は下記カテゴリから覗いて見てください。
www.unityprogram.info