GUIとは何か、クライアントとは、サーバーとは何かを理解しましょう。サーバーからクライアントに指示を出す際い使用する「 RemoteEvent」の使い方も覚えましょう。
登場する英単語
英単語 | 読み方 | 解説 |
---|---|---|
GUI | ジーユーアイ | グラフィカル・ユーザー・インターフェースの略称 |
StarterGui | スターター・ジーユーアイ | 作成済みのGUIを保存しておける場所 |
ScreenGui | スクリーン・ ジーユーアイ | プレーヤーの画面に表示される2Dスクリーンオブジェクト |
PlayerGui | プレイヤー・ジーユーアイ | 実行すると StarterGuiに入れたものがここにコピーされる |
Frame | フレーム | ベースになる枠 |
TextButton | テキストボタン | 文字が表示できるGUI専用ボタン |
TextScaled | テキストスケールド | ボタン枠いっぱいに文字を表示することができる |
ImageButton | イメージボタン | 画像が表示できる GUI専用ボタン |
Visible | ビジブル | falseを代入すると画面に表示されなくなる |
LocalScript | ローカルスクリプト | クライアントで動作するプログラム |
RemoteEvent | リモートイベント | サーバーとクライアント間の通信を行うためのオブジェクト |
OnClientEvent | オンクライアントイベント | RemoteEvent のイベント処理を接続するもの |
チェックポイント
- 一般的にGUIは「StarterGui」に作成する
- 「StarterGui」の中に「ScreenGui」を入れ、その中に「Frame」を入れるのが基本
- さらに「Frame」の中に、TextButtonなどを配置する
- 位置や大きさの指定には、絶対座標と相対座標の2通りがある
- PC、タブレット、スマホで画面サイズ(解像度)が異なるので、相対座標で指定するのがベスト
- 相対座標の場合、0から1の範囲で指定する(画面一杯の大きさは1)
- 位置は、画面左上の座標が(0,0)、右下が(1,1)となる
- 「TextButton」は文字が表示できるボタンで、クリックやタップで反応する
- 「ImageButton」は画像が表示できるボタンで、クリックやタップで反応する
- 実行すると「StarterGui」の中身がすべてPlayerの「PlayerGui」にコピーされる
- 「Frame」の「Visible」をfalseにするとフレームが消える
- GUIの操作はクライアントのプログラム(LocalScript)で行わないといけない
- クライアントとサーバー間の通信は、「RemoveEvent」を使う
- サーバーからクライアントへの指示は「FireClient」を使う
- クライアントからサーバーへの指示は「FireServer」を使う
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local openEvent = ReplicatedStorage.OpenEvent
local Players = game:GetService("Players")
local function onTouch(hit)
local character = hit.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local player = Players:GetPlayerFromCharacter(character)
openEvent:FireClient(player)
end
end
script.Parent.Touched:Connect(onTouch)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local openEvent = ReplicatedStorage.OpenEvent
local frame = script.Parent
local closeBttton = frame.CloseButton
closeBttton.MouseButton1Click:Connect(function()
frame.Visible = false
end)
openEvent.OnClientEvent:Connect(function()
frame.Visible = true
end)
ステップアップ
- 「ScreenGui」の「Enabled」をfalseにするとその中のGUIを非表示にできる
- サーバーから全クライアントへ指示したい場合は「FireAllClients 」を使う
- LocalScriptで、Playerを取得するには場合はこのようにする
local player = game:GetService("Players").LocalPlayer