🐡

【Roblox】FusionでUIやPartを生成してみる Fusion編 #6

2024/08/28に公開

はじめに

今回はFusionのNewInstanceモジュールを使ってみたので共有します。

Fusionの導入方法

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

Fusion記事まとめ

https://zenn.dev/keisuke114/scraps/f33cd9b23b6e29

公式Reference

https://elttob.uk/Fusion/0.2/tutorials/instances/new-instances/

実装

UI要素生成

local Fusion = require(ReplicatedStorage.Fusion)
local Value = Fusion.Value
local New = Fusion.New

local player = Players.LocalPlayer
local gui = player:WaitForChild("PlayerGui"):WaitForChild("MainGui")

local isFrameVisible = Value(true)

local ui = New "Frame" {
	Name = "MainFrame",
	Parent = gui,
	Size = UDim2.new(1, 0, 1, 0),
	Position = UDim2.new(0.5,0,0.5,0),
	AnchorPoint = Vector2.new(0.5,0.5),
	Visible = isFrameVisible
}

local message = Value("Hello there!")

local text = New "TextLabel" {
	Name = "Greeting",
	Parent = ui,
	Size = UDim2.new(0.5, 0, 0.5, 0),
	Position = UDim2.new(0.5,0,0.5,0),
	AnchorPoint = Vector2.new(0.5,0.5),
	TextScaled = true,
	Text = message
}

task.wait(1.0)

message:set("Hello!")

task.wait(1.0)

isFrameVisible:set(false)

最初にNew"指定のUIオブジェクト名"を宣言して作る感じですね。中括弧内にプロパティの宣言をする感じですね。プロパティ宣言の際に自動補完が効かないので打ち間違いが多発しそうなのが怖いところですね。

ちなみにHydrationモジュールも似たような書き方をします。

https://zenn.dev/landel_tech/articles/227dde16b0187e

Partの生成方法

local instance = New "Part" {
	Parent = workspace,
	Color = Color3.new(1, 0, 0),
	Position = player.Character:FindFirstChild("Humanoid").RootPart.Position
}

実行

https://youtu.be/gwLkM-x8nQE

まとめ

これまでFusionについて6個ほど記事を出しました。Fusionの基本的な使い方はとりあえずこれくらいだと思います。

Landelテックブログ

Discussion