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

Unity 2019下SOLAS 128 Mod开发:无法显示光标问题求助

SOLAS 128 Mod开发:光标无法显示的排查方向

针对你在Unity 2019.2.18下用BepInEx开发关卡编辑器时遇到的光标无法显示问题,除了你已尝试的方法,还有以下几个常见因素需要排查:

  • 游戏全局Cursor管理的覆盖:很多游戏会有自己的Cursor控制脚本(比如单例CursorManager),会在每帧或特定时机重置光标状态。你可以用Harmony钩子监听Cursor.visible或Cursor.lockState的修改操作,定位到覆盖你设置的代码;或者直接找到游戏的Cursor管理类,强制覆盖它的状态(比如在你的编辑器激活时禁用该类的更新逻辑)。

  • 自定义UI光标替代了系统光标:如果游戏用Image组件模拟自定义光标,通常会先隐藏系统光标。检查场景中是否有活跃的自定义光标UI,确保你的编辑器模式下要么启用该UI(如果需要用游戏的光标样式),要么直接关闭游戏的自定义光标逻辑,恢复系统光标显示。

  • 新Input System的冲突:如果游戏使用Unity新Input System而非旧的Input Manager,仅设置Cursor.visible可能无效,需要同时控制Input System的鼠标光标状态:

    using UnityEngine.InputSystem;
    // ...
    Mouse.current.cursorVisible = true;
    Mouse.current.WarpCursorPosition(Mouse.current.position.ReadValue()); // 确保光标位置更新
    
  • 全屏模式的强制隐藏:部分游戏在全屏独占模式下会强制隐藏系统光标。可以临时切换到窗口模式测试,或者通过代码修改全屏模式:

    Screen.fullScreenMode = FullScreenMode.Windowed;
    
  • 渲染层级与Camera遮挡:如果你的编辑器UI在低层级Camera下渲染,可能被游戏主Camera的画面遮挡。调整编辑器UI所在Camera的depth值,使其高于游戏主Camera;或者在编辑器激活时,让主Camera忽略UI层。

  • Mod执行顺序问题:如果你的Mod代码执行在游戏隐藏光标逻辑之前,设置会被覆盖。可以通过[BepInDependency]调整Mod加载顺序,或者用Harmony钩子在游戏的Start/Awake方法执行完成后,再触发你的光标设置逻辑。

  • Unity 2019版本的特定Bug:Unity 2019.2存在一些光标相关的已知问题,比如显卡驱动兼容性导致设置不生效。可以尝试加载一个透明自定义光标来触发系统光标显示:

    Texture2D blankCursor = new Texture2D(1, 1);
    blankCursor.SetPixel(0, 0, Color.clear);
    blankCursor.Apply();
    Cursor.SetCursor(blankCursor, Vector2.zero, CursorMode.Auto);
    Cursor.visible = true;
    Cursor.lockState = CursorLockMode.None;
    
  • 游戏焦点处理逻辑:即使设置了Application.runInBackground = false,游戏可能在窗口失去焦点时仍强制隐藏光标。可以钩子OnApplicationFocus方法,在窗口获得焦点时重新设置光标状态;或者直接禁用游戏的焦点相关光标控制代码。

内容的提问来源于stack exchange,提问作者Jace M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:52:36