unity3d 分辨率适配

2015年01月14日 10:51 0 点赞 0 评论 更新于 2025-11-21 14:20

在Unity3D开发中,针对移动端的多机型进行分辨率适配是一项关键任务。本文将介绍《锁链战记》这款游戏的适配方法,该方法通过设置不同的基础尺寸来避免在小屏幕设备(如iPhone 5)上出现镶边问题。

适配思路

此适配方法将UI和背景分别设置为不同的基础尺寸,背景比UI多出的部分为无实际作用的区域,从而避免了在小屏幕设备上镶边。

具体步骤

1. 设置UIRoot的Scaling Style属性

根据开发环境选择不同的属性值:

  • 如果是在电脑上进行开发和测试,将UIRoot的Scaling Style属性设置为FixedSize
  • 如果要将项目打包到移动端,则选择FixedSizeOnMobiles

2. 确定UI基础尺寸

这里以960 * 640作为UI基础尺寸,在相关设置中填写高度为640。

3. 编写脚本BaseAspect.cs

以下是完整的脚本代码:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(UICamera))]
public class BaseAspect : MonoBehaviour
{
// 初始宽度
float standard_width = 960f;
// 初始高度
float standard_height = 640f;
// 当前设备宽度
float device_width = 0f;
// 当前设备高度
float device_height = 0f;
// 屏幕矫正比例
public float adjustor = 0f;

void Awake()
{
Base.GetInstance().BaseInit();
// 获取设备宽高
device_width = Screen.width;
device_height = Screen.height;

// 计算宽高比例
float standard_aspect = standard_width / standard_height;
float device_aspect = device_width / device_height;

// 计算矫正比例
if (device_aspect < standard_aspect)
{
adjustor = standard_aspect / device_aspect;
// Debug.Log(standard_aspect);
}

Debug.Log("屏幕的比例: " + Base.GetInstance().adjustor);

if (Base.GetInstance().adjustor < 2 && Base.GetInstance().adjustor > 0)
{
camera.orthographicSize = Base.GetInstance().adjustor;
}
}

// Use this for initialization
void Start()
{
// 可根据需求添加初始化逻辑
}

// Update is called once per frame
void Update()
{
// 可根据需求添加更新逻辑
}
}

代码解释

  • standard_widthstandard_height:定义了初始的UI基础尺寸。
  • device_widthdevice_height:用于获取当前设备的屏幕宽高。
  • adjustor:屏幕矫正比例,用于调整相机的正交尺寸。
  • Awake 方法:在脚本实例被唤醒时调用,主要完成设备宽高的获取、宽高比例的计算以及矫正比例的计算,并根据矫正比例调整相机的正交尺寸。
  • Start 方法:可用于添加初始化逻辑。
  • Update 方法:可用于添加每帧更新的逻辑。

4. 添加脚本到UICamera节点

将编写好的BaseAspect.cs脚本添加到与UICamera相同的节点上。

适配效果说明

通过以上步骤,即可实现分辨率适配。不过需要注意的是,这种适配方式仍然可能会有镶边的情况存在。在实际开发中,可根据具体需求对脚本进行进一步的优化和调整。