2016-04-03 38 views
0

我在做一個遊戲,我已經到了需要清點的地步。我的意思是一個自定義的。我有gui和所有其他的東西工作,但我找不到一個有效的方式來使插槽(用於工具)滑動。就像這樣。如何在庫存中製作高效的插槽?

好吧,所以我有兩個物品在我的庫存。一個在最上面,一個在第一個下面。我點擊最上面的那個(拿出來),第二個只留在那裏,從最上面的一點點尷尬。

--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) 

請問這是什麼你的意思,還是我錯過了點?

+0

你如何「拿走第一名」?此外,您的基於下劃線的示例似乎不能很好地轉換爲文本。要麼這樣,要麼沒有意義。 –

+0

我相信你可以想出更好的東西。爲什麼不實施例如4個「顯示器」並且告訴他們中的每一個顯示哪個項目?拿筆和紙做素描 – Piglet

回答

1

首先,出於純粹的運氣,我將您的代碼識別爲ROBLOX Lua。將來在本網站上提問時,您應該指定您在ROBLOX Lua中進行編碼,因爲API非常獨特,此處大多數人都不瞭解ROBLOX。

如果我正確理解你的問題,你正在嘗試製作GUI庫存插槽,對不對?我也會假設你使用一個Frame作爲GUI對象,因爲你沒有指定。

我的建議是根據它們的大小來區分它們。 UDim2值有兩對數字。每對中的第一個數字稱爲比例尺,它用於基於相對屏幕尺寸的定位。第二個稱爲偏移量,它用於基於像素量進行定位。你通常應該只使用你已經在做的一個或另一個,這很好。

考慮到這一點,您可以創建一個新的插槽,自動將其自身放置在另一個插槽旁邊。類似這樣的:

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

他用roblox標記了他的問題。所以我想這不僅僅是純粹的運氣。 :) 我不知道roblox,但我不明白這將如何以任何方式解決他的問題。你只是解釋瞭如何把東西放在別的東西旁邊。如果你刪除第一個項目,第二個項目仍然會保留在其位置右側? 我認爲他的問題更多的是概念性。 – Piglet

+0

我如何指定我在RBX lua中編碼? –