⛳
【Roblox】FusionのObserverモジュールを触ってみる Fusion編 #3
はじめに
今回はFusionのObserverモジュールを触ってみたので共有します。
Fusionの導入方法
Valuesについて
公式Reference
Observerモジュールでできること
- FusionValueオブジェクトの値の変更を監視するようにできる機能を付与すること
- 監視機能の明示的終了
実装
Observerの実装について
local Fusion = require(ReplicatedStorage.Fusion)
local Value = Fusion.Value
local Observer = Fusion.Observer
local count = Value(10)
local countObserver = Observer(count)
FusionからObserverの参照をとってきてFusionValueをObserverの引数に入れるだけで完成です。
Observerとは
日本語に直訳すると観察者なのでそのままのイメージで常に特定の値を観察するというイメージです。
今回の場合は観察者(観察対象)
みたいな感じになっています。
変更を検知して何かを実行する
local countDisconnect = countObserver:onChange(function()
print("countが変更されました。: " .. tostring(count:get()))
end)
countDisconnect()
値が変更されるとObserver型が持つonChange関数のコールバックが起動します。
さらにこれらが機能しているインスタンスをDisconectすることで値の監視を止めることができます。
試しに動かしてみる実装
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Fusion = require(ReplicatedStorage.Fusion)
local Value = Fusion.Value
local Observer = Fusion.Observer
local count = Value(10)
local countObserver = Observer(count)
local countDisconnect = countObserver:onChange(function()
print("countが変更されました。: " .. tostring(count:get()))
end)
local strings = Value("test")
local stringsObserver = Observer(strings)
local stringsDisconnect = stringsObserver:onChange(function()
print("Stringsが変更されました。 : " .. tostring(strings:get()))
end)
for i = 1, 5 do
count:set(i)
task.wait(1)
end
for i = 1, 5 do
strings:set(tostring(i))
task.wait(1)
end
print("値の監視を終了します。")
countDisconnect()
stringsDisconnect()
for i = 1, 5 do
count:set(i)
strings:set(tostring(i))
task.wait(1)
end
print("完全終了")
number型の変更とstring型の変更を検知してprint出力してくれるような実装になります。
実行
Discussion