我的 Unity2D 屏幕适配

以下方法纯属我YY,切勿当真!!!

确定一个设计尺寸,比如 devWidth = 960,devHeight = 640, 按照这个尺寸进行设计游戏.

方式一: 不管什么屏幕尺寸,都和设计的尺寸对应.

只需在 Camera上 加上如下脚本:

public class ScreenAdapter : MonoBehaviour {

	private Camera mainCamera;

	private static float devWidth = 960f;
	private static float devHeight = 640f;
	private static float devAspect = devWidth / devHeight;

	// Use this for initialization
	void Start () {
		mainCamera = Camera.main;

		mainCamera.aspect = devAspect;
		mainCamera.orthographicSize = devHeight * 0.01f / 2;
	}
}

方式二:  只缩放背景图片.只需将如下代码放到背景上:

public class BgAdapter : MonoBehaviour {

	private Camera mainCamera;

	private static float devWidth = 960f;
	private static float devHeight = 640f;
	private static float devAspect = devWidth / devHeight;

	//  背景完全显示在屏幕上
	private bool mShowAll = true;

	// Use this for initialization
	void Start () {

		mainCamera = Camera.main;
		Vector3 scale = transform.localScale;

		float sy = mainCamera.orthographicSize * 2 * 100/ devHeight;
		float cameraWidth = mainCamera.orthographicSize * mainCamera.aspect * 2 * 100;
		if (mainCamera.aspect > devAspect) {

			// 会在左右留下空白,所以可以放大x
			float sx = cameraWidth/devWidth;
			scale.x = sx * sy;

			if (!mShowAll) {
				scale.y = scale.x;
			}

			transform.localScale = scale;

		} else if (mainCamera.aspect < devAspect) {

			if (mShowAll) {
				// 会裁减左右,所以可以进行缩小 x
				float sx = cameraWidth/devWidth;
				scale.x = sx * sy;

				transform.localScale = scale;
			}
		}
	}
}

  如果mShowAll为true,则进行适配的时候背景图片会进行不均匀的拉伸,但是图片不会被裁减掉

如果mShowAll为false,则进行适配的时候背景图片可能进行的是均匀的拉伸,但是图片会被裁减掉.

Over!!!

 

时间: 2024-10-07 04:15:53

我的 Unity2D 屏幕适配的相关文章

Unity2D屏幕适配方案

看了cnblogs里的一篇文章,终于理解了Unity2D的摄像机系统:http://www.cnblogs.com/flyFreeZn/p/4073655.html 我根据他的方案,改写了两种适配方案:fixedWidth和fixedHeight,就是锁定其中一个变量来适配屏幕. 1 using UnityEngine; 2 using System.Collections; 3 4 public class GameCamera : MonoBehaviour { 5 public strin

Unity2D多分辨率屏幕适配方案(转载)

一下内容转自:http://imgtec.eetrend.com/forum/3992 此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用. 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度 2.Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们

[原创]一种Unity2D多分辨率屏幕适配方案

此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用. ---------------------------------------正式开始的分割线----------------------------------------- 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕

一种Unity2D多分辨率屏幕适配方案

此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用. ---------------------------------------正式开始的分割线----------------------------------------- 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕

Unity 手机屏幕适配

////如有侵权 请联系我进行删除 email:[email protected] 1.游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知识点: 1-1.什么是像素? 单位面积中构成图像的点的个数. 特点:单位面积内的像素越多,分辨率越高,图像的效果就越好. 1-2.什么是分辨率? 分辨率可以从显示分辨率与图像分辨率两个方向来分类. 示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少.分辨率的单位有:(dp

登录界面、AutoUtils 屏幕适配、自定义Edittext(显示密码可见和一键清空)和 TextInputLayout的使用。

登录界面: AutoUtils自动屏幕适配: AutoUtils屏幕适配使用的方法 : 1.将AutoUtils类复制到要适配的项目中: 2.在程序的入口(清单文件filter):super.onCreate(savedInstanceState);//屏幕适配,这里是以720*1280分辨率为基准的适配AutoUtils.setSize(this, false, 720, 1280); * 这里我们UI是以1920*1280分辨率做图的,并且是横屏显示:AutoUtils.setSize(th

纯代码 自动屏幕适配iPhone

代码判断,你也可以用xib自带的自动布局选项 我是用的纯代码写的 纯代码 自动屏幕适配iPhone,布布扣,bubuko.com

手机卫士13_屏幕适配_异常处理_盈利模式_混淆加密

今天是手机卫士最后一天 1,简易屏幕适配: ①使用线性,相对,帧布局,这三种常用布局在所有设备上几乎可以完整实现,多使用dp,sp,不要使用像素,dp,sp会自动适应屏幕 ②浮动窗体显示的距离问题:它show出来的距离就是像素,所以显示距离不会适应屏幕. 代码里接收的单位一般都是像素. 解决方式:把输入的数字转换成dp单位. 得到像素密度*像素 获得dp数据,根据屏幕实现的像素效果 通过工具类去转换成dp数据DesityUtils 2,应用程序的异常处理: 2.1 alpha版本:小范围的内部测

iOS里面的屏幕适配(两种方法)

第一种方法:进行等比缩放 适用于只有单个或者很少的页面需要适配的时候 第二种方法:用别人已经封装的类,进行屏幕的适配 适用于多个页面都需要进行屏幕适配 这是在ViewController.m里面的代码