この記事について
この記事ではScroll Viewの選択肢をスクリプトで制御する方法が学べます。
この記事でわかること
- Scroll View は Content の下に要素を配置して使う
- Instantiate で Text を生成し、Content に追加できる
- text.text = “書き込み内容”; で文字を書き換えられる
- GetComponent<Text>() で内容を取得可能
Scroll Viewとは?
Scroll Viewについては以下の記事を参考にしてください。
Scroll ViewにTextを追加・取得・書き込み
Scroll Viewの準備
まずはヒエラルキーで右クリックをしてDropdownを1つ用意します。
・「右クリック」→「UI」→「Scroll View」
次にスクリプトを作成して先ほどのScroll View にアタッチしてください。

ContentにTextを追加・書き込み
今回はTextを事前にプレハブ化しておいてそのプレハブをScroll ViewのContentに追加していきます。
※スクリプト作成後、インスペクターで「content」と「textPrefab」をアタッチしておいてください。
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
public class ScrollView_Text : MonoBehaviour
{
[SerializeField] private GameObject text;
[SerializeField] private Transform testContent;
void Start()
{
// 新しいTextを生成してContentに配置
GameObject newTextObj = Instantiate(text, testContent);
TextMeshProUGUI newText = newTextObj.GetComponent<TextMeshProUGUI>();
// 書き込み
newText.text = "New Content";
}
}
実行してみると、Contentの中にTextが複製されましたね。位置調整を行ったらチャットログができそうですね。
Content内のTextの内容を取得する
Textの中身を確認していきたいときにContent内のTextを取得する必要があります。「GetChild(number)」でTextを取得していきましょう。
※Textをインスペクターで事前にContent内に複製しておきます。
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
public class ScrollView_Text : MonoBehaviour
{
[SerializeField] private Transform testContent;
private int i;
void Start()
{
for (i = 0; i < testContent.childCount; i++)
{
Debug.Log(i + ":" + testContent.GetChild(i).GetComponent<TextMeshProUGUI>().text);
}
}
}
実行してみると、Scroll ViewのContent内のtextがすべて取得できました。
まとめ
- Instantiate で Text を生成し、Content に追加できる
- .text で書き込み、GetComponent<Text>().text で取得できる
- ScrollRect.verticalNormalizedPosition = 0f; で最新ログへ自動スクロール可能