最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
unity3d 分辨率适配
在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_width和standard_height:定义了初始的UI基础尺寸。device_width和device_height:用于获取当前设备的屏幕宽高。adjustor:屏幕矫正比例,用于调整相机的正交尺寸。Awake方法:在脚本实例被唤醒时调用,主要完成设备宽高的获取、宽高比例的计算以及矫正比例的计算,并根据矫正比例调整相机的正交尺寸。Start方法:可用于添加初始化逻辑。Update方法:可用于添加每帧更新的逻辑。
4. 添加脚本到UICamera节点
将编写好的BaseAspect.cs脚本添加到与UICamera相同的节点上。
适配效果说明
通过以上步骤,即可实现分辨率适配。不过需要注意的是,这种适配方式仍然可能会有镶边的情况存在。在实际开发中,可根据具体需求对脚本进行进一步的优化和调整。