You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:25:11