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.

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

Total Page Visits: 535 - Today Page Visits: 3

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

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

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