2016-04-03 6 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.

Если я правильно понял ваш вопрос, вы пытаетесь создать игровые автоматы для графического интерфейса, верно? Я также предполагаю, что вы используете Frame как объект GUI, поскольку вы не указали.

Мое предложение состоит в том, чтобы разделить их на основе их размера. Значение UDim2 имеет две пары чисел. Первое число в каждой паре называется масштабом, и оно предназначено для позиционирования на основе относительного размера экрана. Второй называется смещением, и он предназначен для позиционирования на основе количества пикселей. Обычно вы должны использовать только тот или иной, который вы уже делаете, так что это хорошо.

С учетом этого вы можете создать новый слот, который автоматически позиционирует себя рядом с другим. Что-то вроде этого:

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

он отметил свой вопрос с помощью roblox. Поэтому я думаю, что это была не просто удача. :) Я не знаю roblox, но я не вижу, как это решит его проблему. вы просто объяснили, как позиционировать что-то рядом с чем-то другим. если вы удалите первый элемент, второй будет по-прежнему оставаться на позитиве справа? Я думаю, что его проблема более концептуальна. – Piglet

+0

Как определить, что я кодирую в RBX lua? –