0

通常对于 Unity,我在 Illustrator 中设计我的所有作品。所以我从 1440x1920(用于肖像游戏)开始,勾勒出 1080x1920 的红框。因此,适合 1080x1920 的所有内容通常都涵盖了我的 iOS 设备系列。然后我将所有图像的每单位像素数设置为 192。这种方法对我很有帮助。既然 iPhone X 已经加入其中,我该如何以类似的方式迎合它呢?

4

1 回答 1

3

根据我的经验,你不需要做很多事情,场景中的游戏对象会很好地适应,Unity 已经为你做到了,如果你使用 UGUI,你可能唯一需要做的就是调整 UI 画布,并且它也很容易,为什么?因为大多数手机具有相似的宽高比,在我们的团队中,我们会做这样的修复:

  1. 基于 1080p(1080x1920) 设计所有 UI 内容(720p 也可以,但我们认为未来会有更多 1080p 设备)

  2. 将以下脚本附加到所有画布以进行自动修复:

    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 回答