通常对于 Unity,我在 Illustrator 中设计我的所有作品。所以我从 1440x1920(用于肖像游戏)开始,勾勒出 1080x1920 的红框。因此,适合 1080x1920 的所有内容通常都涵盖了我的 iOS 设备系列。然后我将所有图像的每单位像素数设置为 192。这种方法对我很有帮助。既然 iPhone X 已经加入其中,我该如何以类似的方式迎合它呢?
问问题
5868 次
1 回答
3
根据我的经验,你不需要做很多事情,场景中的游戏对象会很好地适应,Unity 已经为你做到了,如果你使用 UGUI,你可能唯一需要做的就是调整 UI 画布,并且它也很容易,为什么?因为大多数手机具有相似的宽高比,在我们的团队中,我们会做这样的修复:
基于 1080p(1080x1920) 设计所有 UI 内容(720p 也可以,但我们认为未来会有更多 1080p 设备)
将以下脚本附加到所有画布以进行自动修复:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CanvasScreenAutoFix : MonoBehaviour { public static CanvasScreenAutoFix instance; private static float DEPEND_W = 1080; private static float DEPEND_H = 1920; public float scaleRatio = 1.0f; private void ResizeCanvas() { int screenW = Screen.width; int screenH = Screen.height; if (DEPEND_W == screenW && DEPEND_H == screenH) { scaleRatio = 1.0f; return; } else { float W_scale = screenW / (float)DEPEND_W; float H_scale = screenH / (float)DEPEND_H; float scale = W_scale < H_scale ? W_scale : H_scale; GetComponent<CanvasScaler>().scaleFactor = scale; scaleRatio = scale; } } private void Awake() { ResizeCanvas(); if(instance == null) { instance = this; } } }
结果变得非常好,实际上,在此之后我们不再需要关心 iPhone 系列的缩放问题(iphone4 可能存在一些问题,因为它们具有不同的纵横比,但由于很少有那些设备了......)。
于 2017-09-25T04:48:44.207 回答