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

Unity中如何通过C#实现窗口移动至屏幕X轴最小/最大位置?

Unity实现窗口移动到屏幕X轴最小/最大位置

要实现将Unity游戏窗口移动到屏幕X轴的最左(最小位置)和最右(最大位置),可以通过Application.SetWindowPosition结合屏幕分辨率、窗口尺寸的计算来完成,以下是完整的MonoBehaviour脚本实现:

using UnityEngine;

public class WindowEdgeMover : MonoBehaviour
{
    // 检测按键触发移动,可根据需求修改为其他触发方式(比如事件、UI按钮)
    void Update()
    {
        // 按A键移动到屏幕最左
        if (Input.GetKeyDown(KeyCode.A))
        {
            MoveWindowToLeftEdge();
        }
        // 按D键移动到屏幕最右
        if (Input.GetKeyDown(KeyCode.D))
        {
            MoveWindowToRightEdge();
        }
    }

    // 将窗口移动到屏幕X轴最小位置(最左侧)
    void MoveWindowToLeftEdge()
    {
        // 获取当前主显示器的工作区边界(排除任务栏等系统UI)
        Display mainDisplay = Display.main;
        Rect workArea = mainDisplay.systemWidth != 0 ? mainDisplay.workarea : new Rect(0, 0, Screen.currentResolution.width, Screen.currentResolution.height);

        // 计算窗口左侧对齐屏幕左边界的X坐标
        int targetX = (int)workArea.xMin;
        // 保持窗口Y轴位置不变
        int targetY = (int)Application.windowPosition.y;

        Application.SetWindowPosition(targetX, targetY);
    }

    // 将窗口移动到屏幕X轴最大位置(最右侧)
    void MoveWindowToRightEdge()
    {
        Display mainDisplay = Display.main;
        Rect workArea = mainDisplay.systemWidth != 0 ? mainDisplay.workarea : new Rect(0, 0, Screen.currentResolution.width, Screen.currentResolution.height);

        // 计算窗口右侧对齐屏幕右边界的X坐标:屏幕右边界 - 窗口宽度
        int targetX = (int)(workArea.xMax - Application.windowSize.x);
        int targetY = (int)Application.windowPosition.y;

        Application.SetWindowPosition(targetX, targetY);
    }
}

关键细节说明:

  • 屏幕工作区适配:使用Display.main.workarea获取系统实际可用屏幕区域(自动排除任务栏、Dock等占用的空间),如果该值无效(部分平台可能不支持),则 fallback 到当前屏幕分辨率。
  • 窗口位置计算:
    • 最左位置:直接取工作区的左边界xMin作为窗口X坐标。
    • 最右位置:用工作区右边界xMax减去窗口自身宽度Application.windowSize.x,确保窗口右侧刚好对齐屏幕右边缘。
  • 触发方式:示例中用键盘按键触发,你可以根据FNF模组的需求,修改为通过游戏内事件、UI按钮或节奏触发来调用MoveWindowToLeftEdge()/MoveWindowToRightEdge()方法。

注意事项:

  • 该功能仅在窗口模式下生效,全屏模式下无法移动窗口。
  • 若要支持多显示器,可扩展代码获取目标显示器的workarea,替换Display.main为指定显示器即可。

内容的提问来源于stack exchange,提问作者Duviz 2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:54:21