2日間はまったので備忘録として記録。
事象
ScrollingFrameのAutomaticCanvasSizeをONにすれば要素にあわせてスクロール幅を自動で調整してくれる機能がある。
それが最後の方までスクロールしてくれないことがあった。
原因
ScrollingFrame→Frame→Buttonのように入れ子にしている状態で、ButtonのPositionをScaleで設定していた。
Scaleで設定するとなぜかおかしくなる。
解決策
ButtonのPositionをScaleではなくOffsetで設定する。
別の解決策
scaleで指定したい場合は、最後に透明のFrameを挿入してScrollingFrameのサイズを伸ばして対応した
local dummyFrame = Instance.new("Frame")
dummyFrame.BackgroundTransparency = 1
dummyFrame.Parent = Frame
個人的によく使用するGridView用のfunction
最後にdummyFrameを挿入する。
function setDummyFrames(frame, parentInstance)
local dummyFrame = frame:Clone()
dummyFrame.BackgroundTransparency = 1
dummyFrame.LayoutOrder = 1000000
dummyFrame.Visible = true
for _, v in pairs(dummyFrame:GetChildren()) do
if not v:IsA("UIAspectRatioConstraint") then
v:Destroy()
end
end
dummyFrame:Clone().Parent = parentInstance
dummyFrame:Clone().Parent = parentInstance
dummyFrame:Clone().Parent = parentInstance
end