当前位置: 首页 > news >正文

Unity 获取Game窗口分辨率

方式1:调用api

直接调用:Handles.GetMainGameViewSize

方法2:反射

  1. 下载Unity源代码Github
    查找GameView脚本:Editro/Mono/GameView/GameView.cs
    GameView脚本是内部类,继承PlayModeView,命名空间是UnityEditor
    PlayModeView继承EditorWindow
  2. 查找Handles.cs脚本,Editor\Mono\Handles\Handles
    Handles.GetMainGameViewSize的静态方法内部调用PlayModeView的GetMainPlayModeViewTargetSize方法

实现

using UnityEditor;
using System.Reflection;
if (GUILayout.Button("获取GameView Size"))
{
    Type type = typeof(EditorWindow);//无法直接获取 UnityEditor.GameView的Type
    Assembly assembly = type.Assembly;//获取程序集
    type = assembly.GetType("UnityEditor.GameView");//获取gameview的类型
    var method = type.GetMethod("GetMainPlayModeViewTargetSize",//获取方法
        BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy);
    var gameWindow = EditorWindow.GetWindow(type);//获取窗口实例
    Vector2 size = (Vector2)method.Invoke(gameWindow, null);//调用方法
    Debug.Log(size);//打印大小
}

相关文章:

  • 深度革命:ResNet 如何用 “残差连接“ 颠覆深度学习
  • 将 YOLO 格式的标注文件(.txt)转换为 VOC 格式的 XML 标注文件
  • 使用 Promise 和 .then() 解决同异步问题
  • IT工具 | node.js 进程管理工具 PM2 大升级!支持 Bun.js
  • 3D标定中的平面约束-平面方程的几何意义
  • Django CSRF验证失败请求为什么会中断?
  • 51单片机的寻址方式(完整)
  • CherryStudio + 火山引擎DeepSeek R1 告别服务器繁忙
  • R语言使用dietaryindex包计算nhanes饮食炎症指数
  • 【路由系列】BGP
  • 使用 CryptoJS 实现 AES 解密:动态数据解密示例
  • 数据结构——最短路(BFS,Dijkstra,Floyd)
  • 【蓝桥杯每日一题】3.17
  • HTML5 Video标签详细教程
  • Edge/Chrome浏览器插件设计、开发、发布完整流程
  • 兆芯大道云行 | 破解高性能云计算数据存储瓶颈
  • 《当Keras遇上复杂模型:探寻其潜藏的局限》
  • 总结Solidity 的数据类型
  • 蓝桥杯动态规划实战:从数字三角形到砝码称重
  • 波士顿咨询X大型制造业数字化转型战略规划项目(98页PPT)(文末有下载方式)
  • 首批证券公司科创债来了!拟发行规模超160亿元
  • 专访|高圆圆:像鸟儿一样,柔弱也自由
  • 视频丨习近平主席出席俄方在机场举行的迎宾仪式
  • 华为招聘:未与任何第三方开展过任何形式的实习合作
  • 上海市政府常务会议部署提升入境旅游公共服务水平,让国际友人“无障碍”畅游上海
  • 退休11年后,71岁四川厅官杨家卷被查