やりたいこと
複数のPartのScriptから同じ関数を呼びたいという目的です。そうすれば、各PartのScriptに同じ関数を書かなくていいから。
今回は、DisplayPartにSetValueという関数を書いておいて、ButtonPartからそのSetValue関数を使います。
参考
構成
手順
- DisplayPartの下にBindableFunctionを追加する。
- BindableFunctionの名前を変更する。今回はSetValueFunction。
- SetValueFunctionの下にScriptを追加する
- ButtonPart.ButtonScriptから、displayPart.setValueFunction:Invoke(1) とかくと、これが使える
コード
setValueFunction
local bindableFunction = script.Parent
local displayPart = bindableFunction.Parent
wait(1)
local function setValue(intValue)
displayPart.answerValue.Value += intValue
end
bindableFunction.OnInvoke = setValue
ButtonPart.ButtonScript
local ButtonPart = script.Parent
local clickdetector = ButtonPart.ClickDetector
local displayPart = workspace.DisplayPart
local colorMemory = ButtonPart.BrickColor
local MY_NUMBER = 1
--先に宣言しておかないといけない
local function countMouseClick(player)
print("1")
ButtonPart.BrickColor = BrickColor.new(0.7,0.9, 0.9)
displayPart.setValueFunction:Invoke(1) --他の関数に記載されている関数を呼び出す
wait(0.2)
ButtonPart.BrickColor = colorMemory
end
wait(1)
--初期化中はanswerValueを叩かれると困る
clickdetector.MouseClick:Connect(countMouseClick)
重要なのは、displayPart.setValueFunction:Invoke(1)のみ。
ほかは今回関係ないです。