鼠标是否可移动 MouseMoveActivate

编辑器不可见
在编辑器属性界面中不显示,可用脚本访问其值,不建议广泛使用

数据流向
数据由服务器同步给客户端,客户端无法同步给服务器

描述

MouseMoveActivate属性确定用户的鼠标是否可以自由移动或锁定

该属性共有三个不同的属性值,默认为None,即无限制,鼠标可自由移动。在属性为Locked时,鼠标进入锁定模式,鼠标被限制在游戏界面屏幕正中间,移动鼠标会调整摄像机视角。当属性为Confined时,鼠标被限制在编辑器界面内。

鼠标锁定类型 枚举属性项 枚举ID
None 0
上锁的 Locked 1
有限制的 Confined 2

实例

实例1:脚本读取鼠标是否可移动

在客户端脚本下运行脚本,3秒后使鼠标进入锁定模式,再过3秒退出锁定模式,观察该属性的值的变化以及鼠标的使用效果

local uis=GetService("UserInputService") --获取用户输入服务
print("当前鼠标移动模式为:"..tostring(uis.MouseMoveActivate)) --打印属性值
wait(3)
uis.MouseMoveActivate=Enum.CursorLockMode.Locked --3秒后进入鼠标锁定模式
print("当前鼠标移动模式为:"..tostring(uis.MouseMoveActivate)) --打印属性值
wait(3)
uis.MouseMoveActivate=Enum.CursorLockMode.None --再过3秒退出鼠标锁定模式
print("当前鼠标移动模式为:"..tostring(uis.MouseMoveActivate)) --打印属性值
wait(3)
uis.MouseMoveActivate=Enum.CursorLockMode.Confined --3秒后进入编辑器锁定模式
print("当前鼠标移动模式为:"..tostring(uis.MouseMoveActivate)) --打印属性值

实例2:使用快捷键使鼠标进入和离开锁定模式

在客户端脚本下运行脚本,通过键位绑定服务,使得按下快捷键Q时,进入/离开鼠标锁定模式

local uis = GetService("UserInputService") --获取用户输入服务
local cas = GetService("ContextActionService") --获取键位绑定服务

local function MouseLock()
    if uis.MouseMoveActivate == Enum.CursorLockMode.None then --若当前鼠标未被锁定,则将其锁定,并打印消息
        uis.MouseMoveActivate = Enum.CursorLockMode.Locked
        print("Enter Mouse Lock Mode")
    else if uis.MouseMoveActivate == Enum.CursorLockMode.Locked then --若当前鼠标已被锁定,则将其解除锁定,并打印消息
            uis.MouseMoveActivate = Enum.CursorLockMode.None
            print("Exit Mouse Lock Mode")
        end
    end
end

cas.BindInput("lock mouse",MouseLock,Enum.KeyCode.Q) --将锁定鼠标的函数绑定到快捷键Q上
文档更新时间: 2020-09-23 14:22   作者:王辰剑