如何用Luau本地脚本与rbxassetid图片自定义Roblox鼠标光标?代码无效
解决Roblox自定义鼠标光标无效的问题
原代码的核心问题
- 变量大小写错误:
Players.LocalPlayer应为players.LocalPlayer,函数内的Mouse.X/Y要改成mouse.X/Y(和前面定义的变量名一致) Image只是个资源ID字符串,不是可显示的GUI对象,没法直接设置位置- 仅在鼠标移动时禁用默认光标,逻辑不完整,且没有创建承载自定义光标的UI元素
修正后的可用代码
local inputServ = game:GetService("UserInputService") local players = game:GetService("Players") local player = players.LocalPlayer local mouse = player:GetMouse() -- 创建承载自定义光标的屏幕GUI local screenGui = Instance.new("ScreenGui") screenGui.Name = "CustomCursorGui" screenGui.Parent = player.PlayerGui -- 创建自定义光标对应的图片标签 local cursorImage = Instance.new("ImageLabel") cursorImage.Name = "CustomCursor" cursorImage.Image = "rbxassetid://12158273870" cursorImage.BackgroundTransparency = 1 -- 隐藏背景,只显示光标图 cursorImage.Size = UDim2.new(0, 32, 0, 32) -- 调整光标大小,按需修改数值 cursorImage.AnchorPoint = Vector2.new(0.5, 0.5) -- 让光标中心对准鼠标位置,避免点击偏移 cursorImage.Parent = screenGui -- 直接禁用默认鼠标光标 inputServ.MouseIconEnabled = false -- 监听鼠标移动,实时更新自定义光标位置 mouse.Move:Connect(function() cursorImage.Position = UDim2.new(0, mouse.X, 0, mouse.Y) end) -- 可选优化:鼠标离开窗口时隐藏光标,回来时显示 inputServ.MouseLeave:Connect(function() cursorImage.Visible = false end) inputServ.MouseEnter:Connect(function() cursorImage.Visible = true end)
关键说明
- 必须通过
ScreenGui+ImageLabel的组合来渲染自定义光标,单纯的资源ID字符串无法直接在游戏界面显示 AnchorPoint设置为(0.5,0.5)是为了让光标中心和鼠标点击点对齐,不然会出现光标位置和实际点击位置偏移的问题- 一开始就禁用默认光标,而不是仅在鼠标移动时设置,能确保状态始终一致
内容的提问来源于stack exchange,提问作者Yndira Hernandez
相关产品推荐
相关产品推荐

