ROBLOX — Элементы GUI под курсором

Автор: | 12 января, 2023
Поделиться...

Так уж получилось что был у меня интерфейс в котором кнопки генерировались скриптом и.. последняя кнопка как то странно себя вела. Иногда нажималась, но чаще нет. При этом эффект over работал в 100%, т.е. выходит кнопка активна!

Долго пытался понять что не так с генерацией кнопок, пока не пришла в голову мысль — а вдруг она просто перекрыта не видимым интерфейсом? В итоге подсказали мне про интересную команду .

GetGuiObjectsAtPosition — Принимает позицию на экране и возвращает список всех экземпляров GuiObject , занимающих эту позицию на экране, отсортированных в порядке их появления на экране сверху вниз.

В итоге написал небольшой локальный скрипт и поместил его в StarterCharacterScripts

-- https://create.roblox.com/docs/reference/engine/classes/BasePlayerGui#GetGuiObjectsAtPosition
-- GetGuiObjectsAtPosition

local UIS = game:GetService("UserInputService")
local Player = game:GetService("Players")
local plr = Player.LocalPlayer
local PlayerGui = plr.PlayerGui


UIS.InputEnded:Connect(function(input, clickBtn)
	
warn("========================================")	
	if input.UserInputType == Enum.UserInputType.MouseButton1 then	

		local pos = input.Position
		local guisAtPosition = PlayerGui:GetGuiObjectsAtPosition(pos.X, pos.Y)
		warn(guisAtPosition)
		
		for k,v in pairs(guisAtPosition) do 			
			print(k,v:GetFullName())
		end

	end
	warn("========================================")	
	
	
end)

И вот такой маленький скрипт мне и показал, что я оказался прав в догадках. Над кнопкой был не видимый Frame.

Подправил его размеры чтобы не заползало на кнопки и.. вуаля! Всё заработало как положено.


Поделиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *