🦁

【Roblox】FusionのComputedsモジュールを触ってみる Fusion編 #4

2024/08/26に公開

はじめに

今回はComputedsモジュールを触ってみたので共有します。触った感想ですが結構使える場面が多そうな印象がありました!

Fusionの導入方法

https://zenn.dev/landel_tech/articles/b4d2df33bb7480

公式Reference

https://elttob.uk/Fusion/0.2/tutorials/fundamentals/computeds/

Computedsモジュールでできること

Computed関数のコールバックに含まれるValueオブジェクトの変更を検知して処理を行いその結果が取得できる。

実装

値の合計を取得

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Fusion = require(ReplicatedStorage.Fusion)
local Value = Fusion.Value
local Computed = Fusion.Computed

local firstCount = Value(10)
local secondCount = Value(20)

local finalCount = Computed(function()
	local nextCount = firstCount:get() + secondCount:get()
	print(nextCount)
	return nextCount
end)

task.wait(10)

firstCount:set(100)

実行結果

Computed実行時とValueオブジェクト変更時に呼ばれる感じですね。

ロブロックスオブジェクトの入れ替え

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Fusion = require(ReplicatedStorage.Fusion)
local Value = Fusion.Value
local Computed = Fusion.Computed

local className = Value("Frame")

local brick = Computed(function()
	local instance = Instance.new(className:get())
	instance.Parent = workspace
	return instance
end, Fusion.cleanup)

task.wait(10)

className:set("Part")

※詳しくはこちら
https://elttob.uk/Fusion/0.2/tutorials/fundamentals/destructors/

実行結果

全部まとめ

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Fusion = require(ReplicatedStorage.Fusion)
local Value = Fusion.Value
local Computed = Fusion.Computed

local firstCount = Value(10)
local secondCount = Value(20)

local finalCount = Computed(function()
	local nextCount = firstCount:get() + secondCount:get()
	print("NextCount : ",nextCount)
	return nextCount
end)

local className = Value("Frame")

local brick = Computed(function()
	local instance = Instance.new(className:get())
	instance.Parent = workspace
	return instance
end, Fusion.cleanup)

task.wait(10)

className:set("Part")

firstCount:set(100)

print("finalCount : ",finalCount:get())

実行

https://youtu.be/vMFhoaRwtZY

Landelテックブログ

Discussion