😸

【Roblox】プレイヤーが持ってるIntValueインスタンスの値の変更を取得してみる

2024/07/12に公開

はじめに

プライヤーが持つ値のの変更をキャッチしてUIに反映させるのをわざわざRemoteFunctionオブジェクトを使ってGetしてくるのは少々面倒ですよね。

そこで今回はローカルスクリプトで値の変更をキャッチしてUIの変更などをする方法を解説していきます。

公式Reference

https://create.roblox.com/docs/ja-jp/reference/engine/classes/IntValue

手順

  1. ServerScriptServiceScriptを配置
  2. そのScriptにPlayerが追加されたらIntValueを追加する処理を入れる
  3. StarterGuiLocalScriptを配置
  4. 自分のplayerオブジェクトを取得する
  5. そのプレイヤーオブジェクトから先ほど追加したIntValueにアクセスしConnect関数をかく
  6. 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)

まとめ

値をサーバーからクライアントに渡すのが面倒なものがあれば応急処置的な感じで使えそうですね。

Landelテックブログ

Discussion