本文へスキップ
🎮

🎮 Roblox · StarterGui · Luau

Roblox Studioではじめての GUI — ボタンを押したらテキストが変わる

Explorer で UI を置き、LocalScript から MouseButton1Click を1本つなぐ。コードは「参照を取って Connect」から。

ゴールは「プレイ中にボタンを押すたび、ラベルの文言が数え上がる」こと。 DataStore やサーバー同期は扱わず、画面まわりの入口に集中します。

自己紹介

ココ先生(講師)・喜ぶ
ココ先生やさしい講師
Roblox は Explorer の階層と「どこで動くスクリプトか」がハンドルです。GUI はまず LocalScript の置き場所をそろえると迷子になりにくいです。
はじめちゃん(学習者)・笑う
はじめちゃんRoblox はじめたて
ボタンは置けるけど、イベントのつなぎ方が不安です。Unity の On Click みたいにしたい!

オープニング対談

ココ先生(講師)・楽しむ
ココ先生Roblox では GUI 用に MouseButton1Click という「クリックの扉」があります。Connect に関数を渡してあげるイメージ!
はじめちゃん(学習者)・驚く
はじめちゃんWaitForChild って何? 名前がちがうと止まっちゃうって聞いた…
ココ先生(講師)・喜ぶ
ココ先生だから Explorer 上の名前と、コードの文字列をそろえるのが第一歩。パズルのピースをはめる感じだね ✨

🎁このレッスンのおみやげ(学べること)

  • 📁 StarterGui の役割
  • 🪟 ScreenGui の階層
  • 🔘 TextButton
  • 📝 TextLabel.Text
  • LocalScript(クライアント)
  • 🔗 MouseButton1Click

このページは StarterGui + ScreenGui + LocalScript です。 同一の見た目を全員に配るなら StarterGui、プレイ中だけの生成物はスクリプトで PlayerGui に足す、など作法が育っていきます。

Studio のバージョンで UI 名称や既定プロパティは多少異なる場合があります。

1👋導入 — いまからやること

Roblox Studio で Baseplate など任意のテンプレートを開き、 StarterGui 以下に ScreenGui を作ります。その中にボタンとラベルを置き、 LocalScript からクリック回数を数えて TextLabel.Text を書き換えます。

こんな人向け

Workspace のパートは触ったことがあるが、画面上の UI まわりは初めて、という方。読むだけなら 10 分、配置とスクリプトまでなら 20〜30 分目安です。

2🎬流れをつかむ

下図は「Explorer での配置 → Luau で Connect → 再生で確認」の流れです。

StarterGui、LocalScript、プロパティ、プレイテストの流れ図
GUI はクライアントで動かし、クリックで状態(ここでは clicks)を足してラベルに反映
ScreenGuiStarterGui
TextButtonClickButton
TextLabelStatusLabel
LocalScriptLuau
ConnectClick
PlayHUD

画面幅に応じて折り返します。横スクロールは不要です。

3🧰出てくるキーワード(カード)

📁
StarterGui

プレイヤーに配布される GUI の起点。ここに置いた ScreenGui がテンプレートになります。

🪟
ScreenGui

2D UI を載せるコンテナ。ResetOnSpawn など挙動を後から調整する場面も出てきます。

🔘
TextButton

クリックできる GUI。MouseButton1Click で反応を受け取ります。

📝
TextLabel

表示専用テキスト。Text プロパティを Luau から更新します。

LocalScript

クライアントで動くスクリプト。UI の見た目変更には向き、重要なゲーム状態はサーバー設計も学びます。

🔗
WaitForChild

子オブジェクトが生成されるまで待つ定番 API。名前のスペルミスに弱いので要注意。

4🧱Explorer での配置

Home タブ → ScreenGui を挿入し、親を StarterGui にします(Explorer でドラッグ)。 その ScreenGui の子として TextButtonTextLabel を追加します。

StarterGui 配下の ScreenGui と兄弟オブジェクトの例
名前(ClickButton / StatusLabel)をコードと一致させるのがコツ
  1. Explorer で StarterGui を確認(無ければ挿入)
  2. ScreenGui を作成し、わかりやすい名前(例: MainHUD)に
  3. 子に TextButton を置き、名前を ClickButton、表示文字は「タップ!」など自由に
  4. 兄弟に TextLabel を置き、名前を StatusLabel、初期 Text は「ボタンを 0 回押しました!」など
  5. 同じ階層(ScreenGui 直下)に LocalScript を追加し、名前は ClickCounter など

5📎LocalScript(Luau)

ClickCounter を開き、次のコードを貼り付けます(または追記)。タブ文字は Studio に合わせてスペースに置き換えても OK です。

ClickCounter.lua
lua
-- ClickCounter(LocalScript の例)
-- 親は ScreenGui。兄弟に TextButton「ClickButton」と TextLabel「StatusLabel」を置きます。

local screenGui = script.Parent
local clickButton = screenGui:WaitForChild("ClickButton")
local statusLabel = screenGui:WaitForChild("StatusLabel")

local clicks = 0

clickButton.MouseButton1Click:Connect(function()
	clicks += 1
	statusLabel.Text = ("ボタンを %d 回押しました!"):format(clicks)
end)

ファイル名の拡張子は教材上の便宜的な表記です。Studio では「LocalScript」として追加してください。

6🔍コードの読み方

  • script.Parent … この LocalScript の親=今回は ScreenGui。兄弟の GUI をここから辿ります。
  • WaitForChildClickButton / StatusLabel が見つかるまで待機。名前が違うとずっと待ち続けます。
  • MouseButton1Click:Connect … クリックのたびに渡した関数が実行されます。
  • clicks += 1 … Luau で足し算の省略記法。状態をローカル変数に保持しています。

7プロパティの合わせ方

  1. ClickButton / StatusLabel の名前がコードと完全一致しているか確認(大文字小文字も)
  2. TextButton が他オブジェクトに隠れていないか、サイズと位置を目視(初期の UDim2 でも可)
  3. LocalScript が ScreenGui の子になっているか(誤って ServerScriptService 等に置いていないか)
  4. Play(または Play Here)でプレイし、画面上のボタンをクリック

8動作確認チャレンジ

  • ボタン文言を英語に変え、ラベルの文体も合わせてみる
  • 別の TextLabel を追加し、WaitForChild で参照して「最後に押した時刻」を表示してみる(発展)
  • Unity のボタンレッスンと手順を並べて比較してみる

9🩹つまずきポイント

  • 何も起きない … LocalScript が入っていない、親が ScreenGui ではない、ボタンが透明&非インタラクティブになっていないか。
  • Infinite yield(待ち続ける)WaitForChild の名前が Explorer と一致していない。
  • 出力にエラーstatusLabel が TextLabel ではない、Text が書けないオブジェクトを指していないか。
  • Play していない … Studio 上の編集画面と、実際の PlayerGui では階層の見え方が違うので再生で確認しましょう。

10🏆まとめ

  • StarterGui に ScreenGui を置き、TextButton と TextLabel を配置した
  • LocalScript から WaitForChild と MouseButton1Click を使った
  • カウンタを増やして TextLabel を更新できた
  • クライアント側 GUI の入口を掴んだ

11🚀次のステージへ

COMIC MODEキャラ対談で復習

Connect と名前そろえのひとこと。

はじめちゃん(学習者)・混乱
はじめちゃんScript と LocalScript、まだちょっとごちゃごちゃしちゃいます…
ココ先生(講師)・笑う
ココ先生画面だけいじるなら LocalScript スタートで OK。サーバー用は将来「みんなで共有したい処理」で登場するよ。
はじめちゃん(学習者)・喜ぶ
はじめちゃんなるほど。いまはクリックの友! Connect がそのつなぎってことですね!
ココ先生(講師)・楽しむ
ココ先生うん。次は「押した結果をみんなで共有する」RemoteEvent に進むと、一気にマルチっぽくなるよ 🎉

🎮理解チェック(3問)

選択してから「正解を見る」で確認しましょう。

1

クイズ

Q1. 画面に出す HUD 用の LocalScript は、ふつんどのプレイヤーの端末で動きますか?

2

クイズ

Q2. TextButton をクリックしたときに反応させるイベントはどれが定番?

3

クイズ

Q3. 全員に共通の画面 UI の「ひな形」を置く場所は?