我如何在库存中制作有效的插槽?

How do i make efficient slots in an inventory?

我正在制作游戏,我已经到了需要库存的地步。我的意思是定制的。我已经制作了图形用户界面并且所有其他东西都在工作,但是我找不到一种有效的方法来使插槽(用于工具)向上滑动。是这样的。

好的,我的库存中有两件商品。一个在最上面,一个在第一个的正下方。我单击最上面的一个(将其取出),第二个只是停留在那里,从最上面往下有点尴尬。

--the only way i know of doing this is with a lot of if/elseif's

if not gui.Position == UDim2.new(0,13,0,123) then
gui2.Position = UDim2.new(0,13,0,123)
end

类似的东西,但是如果我有 10 个插槽怎么办? 20?更多如果是我能想到的。那么,您知道提高效率的方法吗?

因此,根据此处的答案,可以采用以下方法:

t = script.Parent
gui = script.Parent.Parent

t.MouseButton1Click:connect(function()
    t.Position = t.Position + UDim2.new(0,1,0,0)
    gui.w1.Position = t.Position + UDim2.new(0,0, 0, t.Size.Y.Offset)
    gui.w2.Position = gui.w1.Position + UDim2.new(0,0, 0, t.Size.Y.Offset)
    gui.w3.Position = gui.w2.Position + UDim2.new(0,0, 0, t.Size.Y.Offset)
    gui.w4.Position = gui.w3.Position + UDim2.new(0, 0, 0, t.Size.Y.Offset)
    gui.w5.Position = gui.w4.Position + UDim2.new(0, 0, 0,t.Size.Y.Offset)
end)

这是你的意思,还是我没听懂?

首先,纯属幸运,我认出你的代码是 ROBLOX Lua。以后在本站提问时,请注明是用ROBLOX Lua编码,因为API非常独特,这里大部分人都不知道ROBLOX。

如果我没有正确理解你的问题,你是在尝试制作 GUI 库存槽,对吧?我还假设您使用框架作为 GUI 对象,因为您没有指定。

我的建议是根据大小分开。 UDim2 值有两对数字。每对中的第一个数字称为比例,用于根据相对屏幕尺寸进行定位。第二个叫做偏移量,它用于根据像素数量进行定位。您通常应该只使用一个或另一个,您已经在这样做了,这样很好。

考虑到这一点,您可以创建一个自动将自己定位在另一个插槽旁边的新插槽。像这样:

newGui.Position = oldGui.Position + UDim2.new(0, oldGui.Size.XOffset, 0, 0)