Unityに関連する記事です

設計


 サムネイル用のゲームオブジェクトを1つ作成し、プレハブにしておきます。
このゲームオブジェクトにはボタンの機能を持たせて、タップやクリックすることでサムネイルを選択出来るようにします。

 同じゲームオブジェクトであり、かつ、挙動も同じながら、それぞれが異なる内容を実行するためには
ゲームオブジェクトに振る舞いを変えさせる方法が有効です。

 例えば、画像が10個あったとします。そのとき、サムネイル用のゲームオブジェクトを10個作る方法もあります。
ただしその場合、同じようなゲームオブジェクトを10個作成する必要がありますし、増減させる場合にもまた手を加える必要がありますので
作成だけではなく管理も大変になります。特に同じような作業を繰り返し行うことは時間的なロスも大きくなります



 今回はそのような手法ではなく、ゲームオブジェクトを1つだけ作成し、そちらにスクリプトをアタッチして制御することにより、
タップの感知、情報の設定部分については同じ挙動になるようにしておきます。
つまり、サムネイル用のゲームオブジェクトとしての役割において共通する部分については、すべてのサムネイル用のゲームオブジェクトが同じ挙動になるようにします。
そのうえで、ゲームオブジェクトの見た目生成するゲームオブジェクトに提供したいマテリアルの情報などのみを変更するように、スクリプトを利用して情報を設定します。

 プログラムはこういった同じ性質を持ちつつ、異なる内容を処理するという、振る舞いを変えることに長けています

 このような設計にしておくことにより、サムネイル用のゲームオブジェクトのプレハブを1つ作成すれば、
あとはプログラム側で振る舞いを変えることで、サムネイル用のゲームオブジェクトという役割は持ちながら
外見や、タップしたときの情報のみが個々に異なるという制御をさせることが出来ます。

 このロジックを利用すれば、例えば10個の画像用のサムネイルをゲーム内で動的に生成する場合、
ゲームオブジェクトは1つだけ用意すれば、ループ処理を使うことで生成しながら振る舞いを変えることができます。

 10個のゲームオブジェクトを個別で用意するときは異なり、それぞれへのゲームオブジェクトへの手動での設定は不要かつ、
生成時にループ処理を利用しているため、生成する数と設定とを同じ部分で処理できますので、生成の増減にも簡単に対応出来ます。


TextureThumbnailDetail ゲームオブジェクトの作成


 先ほどの手順で作成した Canvas ゲームオブジェクトを利用して、サムネイル用のゲームオブジェクトを作成していきます。

 TextureThumbnailCanvas ゲームオブジェクト内の Content ゲームオブジェクトの上で右クリックをしてメニューを開き、
UI => Button を選択します。名前を TextureThumbnailDetail に変更してください。

 作成する場所を間違えないようにしてください


ヒエラルキー画像(Content ゲームオブジェクトの子オブジェクトか確認)




 TextureThumbnailDetail ゲームオブジェクトの親オブジェクトである Content ゲームオブジェクトには GridLayoutGroup コンポーネントをアタッチしてあるため、
TextureThumbnailDetail ゲームオブジェクトのサイズが自動的に調整されて ScrollView 内に表示されます。


Scene ビュー画像



Game ビュー画像




 TextureThumbnailDetail ゲームオブジェクトには後程スクリプトを作成してアタッチし、画像データ(ImageData)の番号を保持させます。
複数の TextureThumbnailDetail ゲームオブジェクトを生成した場合、それぞれに異なる画像の内容をその都度、スクリプトを利用することで動的に変更できるようにします。

 そのため、このゲームオブジェクトはプレーン(画像の情報などを持たない)状態として作成します。
サムネイル用のゲームオブジェクトではあるものの、中身(画像の情報)がない状態で作成してあるという状態です。



 TextureThumbnailDetail ゲームオブジェクトを選択してインスペクターを確認します。

 先ほどもお伝えしているように、このゲームオブジェクトは、Content ゲームオブジェクトにアタッチされている GridLayoutGroup コンポーネントの影響化にあるため
このゲームオブジェクトの RectTransfrom コンポーネントからでは大きさを変更することはできません

 TextureThumbnailDetail ゲームオブジェクトの大きさを調整する場合には、
Content ゲームオブジェクトにアタッチされている GridLayoutGroup コンポーネントの値を変更して調整を行います。


Content ゲームオブジェクト インスペクター画像



TextureThumbnailDetail ゲームオブジェクト インスペクター画像




 TextureThumbnailDetail ゲームオブジェクトは Button ゲームオブジェクトとして作成していますので、
子オブジェクトとして Text ゲームオブジェクトが一緒に作成されています。
今回こちらは利用しませんので、非アクティブ化するか、削除してください。


TextureThumbnailDetail ゲームオブジェクトをプレハブにする


 ヒエラルキーにある TextureThumbnailDetail ゲームオブジェクトを Prefabs フォルダにドラッグアンドドロップしてプレハブにします。
事前に Project 内に Prefabs フォルダを作成しておき、その中にドラッグアンドドロップしてプレハブにしてください。


ヒエラルキー画像



Prefabs フォルダ(この画像では他にもプレハブがありますが、気にする必要はありません)



プレハブ時のインスペクター



プレハブ編集モード


 
 プレハブにはしましたが、先の手順で、このヒエラルキーにある TextureThumbnailDetail ゲームオブジェクトを利用します。
そのためまだ、ヒエラルキーにある TextureThumbnailDetail ゲームオブジェクトは削除はせずに残しておいてください。


プレハブの状態を確認する


 Prefabs フォルダ内にある TextureThumbnailDetail ゲームオブジェクトをダブルクリックしてプレハブ編集モードにします。

 RectTransfrom の Width と Height の値を確認してください。どちらも 0 になっています。


RectTransfrom



 UI のゲームオブジェクトは、この Width と Height により、上下左右の大きさが設定されます。
UI のゲームオブジェクトがプレハブになっている場合であっても、従来は各値を保持しています。

 ただし今回このゲームオブジェクトは ScrollView 内 Content ゲームオブジェクトの子オブジェクトとして設置され、
その際に GridLayoutGroup コンポーネントによって大きさが制御される仕組みです。

 各種 LayoutGroup コンポーネントの機能を利用している場合、
UI のゲームオブジェクトの大きさは、LayoutGroup コンポーネントよって大きさが制御されます。

 そのため、このゲームオブジェクトについては、Scene ビューで大きさを調整していても、
常に Width と Height の値が 0 になっています。



 以上でこの手順は終了です。

 => 次は AR空間にリストから選択した画像のオブジェクトを生成する です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます