当前位置: 首页 > 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);//打印大小
}
http://www.dtcms.com/a/76332.html

相关文章:

  • 深度革命: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)(文末有下载方式)
  • 知行之桥数据追踪实战指南:三种定位数据的精准方法
  • C++差分风暴:区间修改终极模板
  • SpringBoot实现发邮件功能+邮件内容带模版
  • 理解大模型的function call ,思维链COT和MCP 协议
  • H-ZERO自定义全局字体 支持项目个性化字体需求
  • 【WRF-Urban】城市冠层/建筑楼层设置
  • C++ 学习笔记(三)—— 入门+类和对象
  • MySQL 8主从复制配置最佳实践
  • uniapp 实现微信小程序电影选座功能
  • leetcode-50.Pow(x,n)