最近把游戏的iPhoneX自适应做完了,并且已经过了审。我的做法是每个界面的最上层都是一个横纵Stretch自动拉伸的,检测当发现是iPhoneX时,打开界面代码中自动设置 Left Top Right Bottom 为44.
由于我们用的是Unity5.5.4,并没有方法来判断是否是iPhoneX 所以就用分辨率判断了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/// <summary> /// 自适应iPhoneX /// </summary> /// <param name="canvas">Canvas.</param> private void OpeniPhoneX(Canvas canvas){ #if UNITY_IPHONE if (Screen.width == 2436 && Screen.height == 1125){ RectTransform rectTransform = (canvas.transform as RectTransform); rectTransform.offsetMin = new Vector2(44f,0f); rectTransform.offsetMax = new Vector2(-44f,0f); } #endif } |
接着就是界面最下面可能有些需要全屏的图,这样就不全屏了,所以需要给全屏图挂一个脚本。一般做全屏图有两种方式,一个是自动拉伸的,另一个就是AspectTatioFitter带裁切的全屏。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// <summary> /// 自适应iPhoneX背景 /// </summary> public class UIRectLayout : MonoBehaviour { #if UNITY_IPHONE void Awake () { if (Screen.width == 2436 && Screen.height == 1125) { AspectRatioFitter aspectRatioFitter = GetComponent<AspectRatioFitter> (); if (aspectRatioFitter) { aspectRatioFitter.aspectRatio = 2.165333f; } else { RectTransform rectTransform = transform as RectTransform; if (rectTransform.anchorMax.x == 1f) { rectTransform.offsetMin = new Vector2(rectTransform.offsetMin.x - 44f,rectTransform.offsetMin.y); rectTransform.offsetMax = new Vector2(rectTransform.offsetMax.x +44f,rectTransform.offsetMax.y); } } } } #endif } |
OK
- 本文固定链接: https://www.xuanyusong.com/archives/4464
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
非常受用
安卓的全面屏mono是怎么做的适配的?主要针对小米、华为、oppo和vivo四个厂商的。
不同厂商的分辨率不一致,notch高度也不一致 很头痛
momo,最近开始用unity做Android游戏开发,发现很多东西在Android上都没法正常使用,比如查找一个目录下的所有文件,还有加载StreamingAssets下的一个txt, jar:file:///data/app/com.XXX.XXX-32swj-wqw4NcKiP9LEPfdg==/base.apk!/assets/Config/GameFloatConfig.txt这是txt的完整路径,但是无论如何都无法打开这个文件,这两个问题已经困扰我很多天了,一直没有查到有用的资料能解决问题的
不行的,Android下的File类是用不了的, 如果真想读,可以用www或者用android的assetmanager api
用AssetManager可以读写所有文件和目录吗?用linux下可以使用的C++代码打包为库能不能也实现同样的读写文件和目录的功能?
AssetManager只能读 asset目录下的,因为是只读,并无法写。
我是改 ios screen大小的 不用改项目代码。。
是AspectRatioFitter
NGUI做法差不多
但是你是真的这样子写死?现在全面屏越来越多
可以贴一下iPhone X 自适应分辨率 NGUI的做法吗?谢谢。
android最近我还在调研, 听几个朋友说需要做一个配置表。。 不过我看android 9 已经支持获取 安全区域的接口, 这块你们有经验吗?
所以雨松大大的安卓适配有想法吗?现在不进行适配打出来的包装在刘海屏安卓手机上默认左右两条黑边,其实挺方便的,但是如果想要达到iPhoneX的效果,我这里查到的是android O版本的需要调用手机厂商给的接口。。。感觉好多啊,而且一个一个还得现查。。。。。
其实很简单的 不用区分那么多的 因为水滴屏幕 刘海屏幕 全面屏幕 各种都要考虑 那么就一刀切就行 判断屏幕的宽高比例 符合1:1.7或者1.8 具体我忘记多少了 一定能适配
44 怎么来的?ios 文档好像没说多少
哈哈,我也是这么搞的,也已过审
英雄缩减略同啊