😸
【Roblox】プレイヤーが持ってるIntValueインスタンスの値の変更を取得してみる
はじめに
プライヤーが持つ値のの変更をキャッチしてUIに反映させるのをわざわざRemoteFunction
オブジェクトを使ってGetしてくるのは少々面倒ですよね。
そこで今回はローカルスクリプトで値の変更をキャッチしてUIの変更などをする方法を解説していきます。
公式Reference
手順
-
ServerScriptService
にScript
を配置 - そのScriptにPlayerが追加されたら
IntValue
を追加する処理を入れる -
StarterGui
にLocalScript
を配置 - 自分のplayerオブジェクトを取得する
- そのプレイヤーオブジェクトから先ほど追加した
IntValue
にアクセスしConnect
関数をかく -
Connect
関数の中にUI更新などの処理を入れる
完了!!
ServerScriptServiceでIntValueオブジェクト生成!
Players.PlayerAdded:Connect(function(player)
--IntValueを入れるフォルダ作成
local info = Instance.new("Folder")
info.Name = "info"
info.Parent = player
--IntValue生成
local count = Instance.new("IntValue")
count.Name = "Count"
count.Value = 0
count.Parent = info
end)
StarterGui
にLocalScriptを配置し変更イベントを受け取る!
local Players = game:GetService("Players")
local Info = Players.LocalPlayer.info
--Countの値が変更されたら自動でfunctionの中身が呼ばれる
Info.count.Changed:Connect(function(Value)
print("Changeed Count :" .. Value .. " 値が変更された!")
--TextLabel.Text = tostring(Value) <-- こんな感じでテキストを変更していけます!
end)
まとめ
値をサーバーからクライアントに渡すのが面倒なものがあれば応急処置的な感じで使えそうですね。
Discussion