はじめに
ただのメモです。
Unity6を勉強中。
間違ってるところあったら教えてください。
ゲームオブジェクト
Buttonのテキストの変更
ヒエラルキーでボタンの子要素のText (TMP)をクリックし、TextMeshProのテキストエリアの文字列を変更する。
ButtonをクリックしてスクリプトでDebug.Log()を実行する
- ヒエラルキーで「UI -> キャンバス」でキャンバス作成
- キャンバス配下に「UI -> ボタン」でボタン作成。「MyButton」と命名
- ヒエラルキーで「空のオブジェクト」を作成。「ButtonContoller」と命名
- 上部メニューの「アセット -> 作成 -> MonoBehaviourスクリプト」でスクリプト作成。「ButtonScript」と命名
ButtonScriptを開いて以下のコードを書く。
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
public Button m_Button;
void Start()
{
m_Button.onClick.AddListener(ButtonClicked);
}
void ButtonClicked()
{
Debug.Log("Button clicked");///ログ出力
}
}
- ヒエラルキーでButtonContollerをクリック
- インスペクターで「コンポーネントを追加」をクリック
- 「ButtonScript」を検索してこれをクリックしてコンポーネントを追加
- 「Example(スクリプト)」の欄の「ボタン」にヒエラルキーからMyButtonをD&D
- プレイしてボタンをクリックしてテスト
スクリプト
UI.TextをFind関数で取得
using UnityEngine.UI;
using TMPro; // TextMeshProUGUIを参照するのに必要
public class Example : MonoBehaviour {
private Text m_Text;
void Start() {
m_Text = GameObject.Find("MyText").GetComponent<TextMeshProUGUI>();
m_Text.text = "change!";
}
}
なんでもTextMeshProUGUIというのがそうらしい。
GameObject.Find()は返り値の型はGameObjectで、そこからGetComponent()でTextMeshProUGUIを取得する。
Buttonのクリック時の関数を設定
using system.Collections;
using UnityEngine.UI;
public class Example : MonoBehaviour {
private Button m_Button;
void Start() {
m_Button.onClick.AddListener(ButtonClicked);
}
void ButtonClicked() {
Debug.Log("clicked!");
}
}