UnityシェアするUnityでリストの様な物を作る際「ScrollView」を使いますが、大抵の場合、リストの要素は動的に増えていきます。始めから要素数の決まっているタイプのリストなら良いのですが、そうではない場合は一工夫必要です。今回は、動的に要素の増えるリストを、ScrollViewを使って実装する方法をご紹介します。ScrollViewには模様付きの背景画像があり、スクロール時に一緒にスクロールして貰おうと思います。メッセージ枠を使わせていただいております。インポートしてUIで使えるように設定を変更。Editor」ボタンを押します。この様に調整しておきます。UIが元画像より大きくなった時に、描画をループする部分を囲っています。ScrollViewの作成まずはScrollViewを作ります。今回は縦方向にスクロールする、テキストのリストを作ろうと思います。文字が収まるように適当な値に設定します。今回は「500」にしました。続いて、Heightの値を設定します。このHeightの値は、リストを納めるウィンドウの縦サイズになります。値を小さくするとウィンドウは狭くなり、必要なスクロール量が増えます。「280」に設定しました。今回リストに並べるのは文字なので、「Text」オブジェクトを作成します。(アイコン等を並べる場合には、「Image」を使います。View」の中の「Content」を右クリックして、UIからTextを選択します。Element」を追加します。Width」のチェックボックスをONにしておきます。値は「30」に設定しました。FontSizeも見やすい大きさに変更しておきましょう。合わせて、TextのRectTransformのWidthも文字列が納まるように適当な値に変更しておきます。View」を開いていき、「Content」を選択します。Fitterを、追加します。Imageコンポーネントの設定Imageに先ほど準備した枠の画像を適用します。Type」を忘れずに「Tiled」に設定しておきます。これで枠が広がった時に、UIの見た目が崩れない様になります。VerticalLayoutGroupの設定Paddingの中の、LeftとTopの値を以下の様に変更し、レイアウトを調節します。Expand」の、Width及びHeightのチェックボックスをOFFにします。今回は、各アイテムの大きさを自動で拡大する必要は無いためです。Size」に変更します。最後に、ScrollViewオブジェクトを設定します。今回は縦方向のスクロールのみなので、「Horizontal」のチェックボックスを「OFF」にします。Scrollbar」を「None」にしておきます。Type」を「Clamped」に設定しておきましょう。生成時の処理を書いたスクリプトを作成します。動かすだけなので、ボタンにアタッチして使います。}}string型のListを作り、適当に文字列を登録します。あとはボタンが押された時に、「Content」の下にTextPrefabを使ってGameObjectを作成し、Textコンポーネントのtextを書き換えています。使用した文字列は、再度使われない様にListから削除しています。Listの要素がなくなったら、ボタンを押せないようにし、ボタンの文言も書き換えます。スクリプトの適用スクリプトの作成が終わったら、適当な場所に「Button」を作ります。「Button」オブジェクトに先ほど作成したスクリプトをアタッチし、Inspectorの「Button」コンポーネントの「OnClick」に「OnClickAddSkillButton()」を登録します。シーンを再生すると、ランダムでいくつかのテキストが作成されます。全部追加されるとボタンが押せなくなります。要素数に応じて、ウィンドウ枠が広がること、スクロール時に背景もスクロールしている事を確認できます。Group」を使います。機能的には同じ様な物なので、適宜横方向スクロールに置き換えて考えれば問題ないと思います。サンプルプロジェクトgithubに、今回の実装をしたサンプルプロジェクトがあります。GitHub.github.com適宜ご活用ください。Group」系コンポーネントを使った時の、オートレイアウトの落とし穴についてご紹介したいと思います。mig入社3年目のエンジニアです。iOS/Androidアプリの開発をしています。【Unity】ゲーム画面のスクリーンショットを撮影し、UIとして使用するカメラの描画内容をTexture2Dとして取得し、Spriteに変換せずにゲーム画面中にUIとして表示する方法をご紹介しています。記事を読むUnityで急にスクリプトが動作しなくなった時の話スクリプトが止まってしまった理由は、NullReferenceExceptionによる処理の停止。Nullを出してしまっても、スクリプトを止める事なく動作させる方法についてご紹介しています。サンプルプロジェクトも掲載しています。自動レイアウト機能による整列の影響を受けない方法をご紹介しています。サンプルプロジェクトも掲載しています。