UniWebView3 使用中遇到的坑
## **UniWebView3和Screen.SetResolution**
最近在做游戏内部访问网页的功能逻辑,使用了UniWebView3插件,结果遇到了一个比较坑的问题,在此记录一下,以备查阅。
我首先使用UniwebView做了一个demo,导出到android和ios,能够正常的自适应尺寸,设置fullScreen,ReferenceRectTransform 都是没有问题的。
然后我将插件导入我们的游戏项目,并设置好参数。导出android包运行结果是位置和尺寸全都不对。
why? ,查了网上的很多资料和例子,没有人遇到我的问题(demo正常,导入游戏项目就gameOver),想想指定是我们的项目里面有什么屏幕设置造成了,后来就搜到了Screen.SetResolution。
下面展示一些 代码。
public void SetScreenResolution(){
#if UNITY_ANDROID || UNITY_IOSif (_scaleWidth == 0 && _scaleHeight == 0){int width = Screen.currentResolution.width;int height = Screen.currentResolution.height;int designWidth = 1280;int designHeight = 720;float s1 = (float)designWidth / (float)designHeight;float s2 = (float)width / (float)height;if (s1 < s2){designWidth = (int)Mathf.FloorToInt(designHeight * s2);}else if (s1 > s2){designHeight = (int)Mathf.FloorToInt(designWidth / s2);}float contentScale = (float)designWidth / (float)width;if (contentScale < 1.0f){_scaleWidth = designWidth;_scaleHeight = designHeight;}}if (_scaleWidth > 0 && _scaleHeight > 0){if (_scaleWidth % 2 != 0){_scaleWidth -= 1;}Screen.SetResolution(_scaleWidth, _scaleHeight, true);Debug.Log("游戏分辨率为:" + _scaleWidth + " x " + _scaleHeight + " 当前分辨率为:" + Screen.width + " x " + Screen.height);}
#endif}
这段代码是在游戏运行时设置屏幕分辨率,目的是为了提高运行效率,当然对android游戏提升性能比较明显,对ios没啥用。
好吧,问题出现了,以我多年的暴力经验就是,把这段代码干掉,反正我们游戏发布ios,没什么影响。but,我们负责人说了,那是不行的,我们后期还是要发android版本的。作为一个苦逼的打工仔,只能遵命。
我的想法是既然当前游戏分辨率是根据原始分辨率计算的,那就反推回去。
不多说直接上代码:
private UniWebView uniWebView;//需要引用到的 rect,作为网页的viewpublic RectTransform viewImage;private string url = "https://www.baidu.com/";//UI层摄像机,如果Canvas.RenderMode == ScreenSpace-Camerapublic Camera camera;//被设置的游戏分辨率widthprivate int _scaleWidth;//被设置的游戏分辨率heightprivate int _scaleHeight;//初始屏幕分辨率(屏幕正常分辨率)public static Vector2 initScreen = Vector2.zero;///uniWebView = GameObject.FindObjectOfType<UniWebView>();if (uniWebView == null){GameObject webViewGameObject = GameObject.Find("UniWebView");if (webViewGameObject == null)webViewGameObject = new GameObject("UniWebView");uniWebView = webViewGameObject.AddComponent<UniWebView>();//这个是例子中正确的使用方法,如果你的屏幕分辨率没有被设置。//uniWebView.ReferenceRectTransform = viewImage Rect rect = viewImage.rect;var screenPos = camera.WorldToScreenPoint(viewImage.transform.position);Debug.Log("screenPos===>" + screenPos);float width = rect.width / 1342 * initScreen.x;float height = rect.height / 640 * initScreen.y;float x = screenPos.x/ _scaleWidth * initScreen.x;float y = screenPos.y/ _scaleHeight * initScreen.y;Debug.Log("x===>" + x + " y====>" + y + " width===>"+ width+ " height===>"+ height);uniWebView.Frame = new Rect(x- width/2, y- height/2, width, height);}
代码中1342*640 ,这个是我们游戏设置的标准分辨率。所有的UI都以这个分辨率自适应。
好了,导出包测试结果。
哈哈,跟我设置的viewImage一样的位置和大小,赶快来试试吧。
UniWebView3 使用中遇到的坑相关推荐
- jQuery Mobile使用中遇到的坑!填坑很难,但很有成就感。。
jQuery Mobile使用中遇到的坑!填坑很难,但很有成就感.. 最近参与到一个项目的前端开发中,为了提高用户体验使用到了jQuery Mobile.主要是用到了页面过渡效果,这种效果可以做到页面 ...
- JAVA加密--AES加密算法JAVA实现及使用中的各种坑,超实用
1. AES 1.1. 概念 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. 这个标准用 ...
- Hippo4j和DynamicTp动态线程池介绍和使用中遇到的坑
文章目录 @[toc] 1.前言 1.1Dromara致力于微服务云原生解决方案的组织 1.2 动态线程池的思路 1.3Hippo4j和DynamicTp动态线程池解决什么痛点 2.介绍 2.1Hip ...
- AnkiReader 和 Anki 真题助手:Anki 使用中需要避坑的两个软件
AnkiReader 和 Anki 真题助手:Anki 使用中需要避坑的两个软件 缘由 随着 Anki 的普及,越来越多用户开始尝试使用 Anki 进行学习.然而想要完全掌握 Anki 有相当难度,由 ...
- 阿里云直播在实际使用中的一些坑(持续更新中...)
前言 最近在基于阿里云做直播会议的实践,在使用中遇到了部分坑,在此记录下,提醒自己和同道中人. 具体坑如下: 为了保证推流和拉流的安全性,阿里云是默认开启了鉴权保护的,所以不带auth_key是无法访 ...
- Android中动态初始化布局参数以及ConstraintLayout使用中遇到的坑
Android中动态初始化布局以及ConstraintLayout遇到的一个坑 ConstraintLayout是Android中的一个很强大的布局,它通过控件之间的相对定位,来完成一个layout中 ...
- 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)
通过 mklink 命令可以创建文件或文件夹的链接,而这种链接跟快捷方式是不一样的.然而我们还可能会遇到其使用过程中的一些坑,本文将整理这些坑并提供解决方法. 0x00 背景介绍:mklink mkl ...
- php加入队列失败,Laravel队列使用中踩的坑,不报错但是队列一直再重试
使用方案 使用的Laravel框架提供的队列服务,使用artisan命令来监听队列 使用的是事件队列,定义的Event和Listener如下: TestEvent为触发的事件类, TestListen ...
- Redis Hset使用中的小坑
坑点 Redis Hset 命令用于为哈希表中的字段赋值 . 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作. 如果字段已经存在于哈希表中,旧值将被覆盖. 返回值 如果字段是哈希表中的一 ...
- video标签使用中踩的坑
最近公司需要在项目中添加视频,并且是用angularjs写的项目,中间遇到了一些坑,在此记录下来. 1.有些html viedo播放视频有声音但是没图像 1.1.MP4有3中编码格式,mpg4(xdi ...
最新文章
- 华为机考HJ13句子逆序C语言弱智解法
- 程序基本功之遍历二叉树
- 记一次MyBatis的错误
- 109_Power Pivot客户ABC(帕累托)分析度量值写法(非计算列)
- Oculus关于Internal Error:OVR53225466报错解决方法
- CSDN 在线峰会——揭晓阿里云核心技术竞争力
- 新浪微博:“救命的黄金稻草”
- Tomcat8正确配置环境变量详细方法
- JxBrowser 7.16 Crack by Xacker
- Photoshop 套索工具抠图
- 【视频演示】B站视频演示
- 家里的网络太慢了,怎么办?
- Java工程师(面试)
- matlab弹簧振子的阻尼振动,MATLAB计算方法和技巧6_2阻尼振动
- matlab 生成色带和彩色图像
- 经销商转型为什么要选择移动订货平台?
- SQL 语句的多表查询方式
- web3默克尔树MerleTree白名单校验
- fdma调制解调matlab,信号与系统Matlab实验—频分多址FDMA
- 掌上单片机实验室 — 编程环境(3)