🐙

【Roblox開発】RemoteFunctionを利用してローカルスクリプトから値を入れて送る方法

2024/07/03に公開

RemoteFunctionとは

サーバーとクライアント間で情報をやり取りするときに使うものになります。

RemoteEventと違うところは送信したら確実にレスポンスが返ってくるところです。

よくある利用例

自分の装備をサーバー側で変更し自分の端末のUIを変更する

  1. クライアントで装備ボタンを押す
  2. サーバーで自分のcharacterの装備を変更する
  3. 変更完了したらtrueというbool値を返す
  4. クライアントでtrueというレスポンスを受け取り装備UIを閉じる

ネットワークの通信の関係で変更できなかった場合レスポンスに何も返らないのでif文でrespons = nilで判定することで失敗したというUIを表示するみたいなことができる。

公式リンク

https://create.roblox.com/docs/ja-jp/reference/engine/classes/RemoteFunction#InvokeClient

セットアップ

ローカルスクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local functions = ReplicatedStorage:WaitForChild("Functions")
local sampleFunction = functions:WaitForChild("SampleFunction")

Button.Activated:Connect(function()
	print("Button")
    local sampleText = "Test"
    local response = sampleFunction:InvokeServer(sampleText)
	print("Response:".. response) -- 出力は "Response: response"
end)

サーバースクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local functions = ReplicatedStorage:WaitForChild("Functions")
local sampleFunction = functions:WaitForChild("SampleFunction")

sampleFunction.OnServerInvoke = function(player,value)
	print("Value is "..value) -- 出力は "Value is Test"
    local sampleText = "response"
    return sampleText
end
Landelテックブログ

Discussion