4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

簡単なポップアップの実装

Last updated at Posted at 2022-04-14

2022.4.13 1日目

ポップアップをスクリプト無しで実装する(見た目の部分はスクリプトあり) (1h)

download.gif

実装環境
・Unity 2021.3.0f1
・Windows

ボタンを押す→ポップアップが表示される→クローズボタンを押すとポップアップが閉じる
 ポップアップ内 
  ・スクロールできる 
  ・均等にオブジェクトが並べられている

↑のように実装しました。

1、ボタンの配置

Canvasオブジェクトの子にUI>Buttonを選択し、ボタンを配置します
bandicam 2022-04-14 11-48-20-502.jpg
bandicam 2022-04-14 11-46-35-620.jpg

2、ポップアップの作成
bandicam 2022-04-14 11-54-02-079.jpg

空のオブジェクトを作成し、その子としてPopup内のオブジェクトを配置していきます。
bandicam 2022-04-14 11-55-54-101.jpg

ポップアップの背景を作成します。
空のオブジェクトを作成し、Inspector>Add Component>UI>Imageを選択し大きさを好みの大きさにします。
bandicam 2022-04-14 11-59-05-716.jpg

バックグラウンドの子としてポップアップを閉じるボタンを配置します。(上の画像内のCloseButton)
(子とした理由は、hierarchy内で下にあるオブジェクトが上に表示されるためです)

※ここから見た目の実装(スクリプトあり)
3、ScrollViewの設定

2の中で作成した、バックグラウンドの下、Canvasの子としてScrollViewを作成します。
UI>ScrollViewを選択し配置します。
bandicam 2022-04-14 12-10-45-087.jpg

(今回は縦のスクロールのみを実装するため、元々あった横のスクロールバーは削除しております)
bandicam 2022-04-14 12-11-38-531.jpg

ScrollView>Viewport>Contentの高さを変更することで、スクロールできる画面の範囲が変更できます。
bandicam 2022-04-14 12-16-49-743.jpg

Content内にAdd Component>Grid Layout Groupを選択し、格子状にオブジェクトを並べるように設定します。

 Padding
   Left:一番左のスペースをどれくらいあけるか
   Right:一番右のスペースをどれくらいあけるか
   Top:一番上のスペースをどれくらいあけるか
   Bottom:一番下のスペースをどれくらいあけるか
 Cell Size:表示するオブジェクトのサイズ
 Spacing:セルとセルの間

bandicam 2022-04-14 12-20-22-837.jpg

ボタンはあらかじめPrefab化してあります。
適当な位置に空のオブジェクトを作成し、ScrollViewを管理するようにします。

[SerializeField] public GameObject cellPrefab;
[SerializeField] public GameObject content;
    // Start is called before the first frame update
    void Start()
    {
        for ( int i = 0; i < 20; i++ )
        {
            GameObject instance = Instantiate(cellPrefab);
            instance.transform.parent = content.transform;
        }
    }

SerializeFieldでInspectorからオブジェクトや値を設定できるようにします。

[SerializeField] public GameObject cellPrefab;
[SerializeField] public GameObject content;

Prefabをcontentオブジェクトの子として生成します

for ( int i = 0; i < 20; i++ )
{
    GameObject instance = Instantiate(cellPrefab);
    instance.transform.parent = content.transform;
}

Instantiate(生成するオブジェクト,生成する座標Vec3)
ですが、今回GridLayoutGroupを設定して、生成する座標は固定なので設定しなくて大丈夫です。

ここまで見た目の部分です。

4、ボタンの設定

1で設定したボタン(ポップアップを表示するボタン)のInspector>On Click()に、2で作成したポップアップオブジェクトを設定します。
bandicam 2022-04-14 12-27-17-188.jpg

No Functionの部分を以下のように設定します。
SetActiveでオブジェクトのアクティブ状態を設定します。
bandicam 2022-04-14 12-27-38-029.jpg

チェックボックスにチェックを付けます。
(チェックあり:設定したオブジェクトをアクティブ状態にする。
 チェックなし:設定したオブジェクトを非アクティブ状態にする。)
bandicam 2022-04-14 11-47-02-408.jpg

同じように、ポップアップに設定したポップアップを閉じるボタンの設定をして、
閉じるボタンをクリックするとポップアップが閉じるように設定します。

5、最後にポップアップオブジェクトをデフォルトで非アクティブ状態に設定します。

終わりです。

4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?