Unity3d 手机屏幕自动适配

现在,市场上的手机分辨率多样化。带给开放人员一个很大的“跨界问题”。本人,昨晚突发奇想。手机分辨率多样化,但手机开放人员,制作UI时,最为重要的两个因素就是Position(位置)、Scale(大小);

我引入一个“比例”概念;

比例:

原始开放的平台手机分辨率为960*640,一个GameObject:Position(300,100,0),Scale(100,100,1);

那么“移植”到 800*480手机上;

“比例”:RatioV3(800/960,480/640,1);

次GameObject在800*480手机为:Position(249,75,0),Scale(83,75,1);

效果还算是比较理想;

代码如下:

publicclass _Public : MonoBehaviour {

public    static Vector3  helfScreen;

  Vector3  initScreen=new Vector3 (480,320,1);

public  static  Vector3  ratioScreen;

 

// Use this for initialization

void Awake () {

getScreen();

}

public   void getScreen(){

 

if(helfScreen==Vector3.zero){

helfScreen.x=(float)(Screen.width/2);

helfScreen.y=(float)(Screen.height/2);

helfScreen.z=1f;

}

if(ratioScreen==Vector3.zero){

float  x= helfScreen.x/ initScreen.x;

float  y= helfScreen.y / initScreen.y;

ratioScreen.x=float.Parse(x.ToString("F2"));

ratioScreen.y=float.Parse(y.ToString("F2"));

ratioScreen.z=1f;

}

 

}

}

.81640625public class _ScreenFit : MonoBehaviour {

[System.Serializable]

public  class  ScreenFit{

public  Transform   fitTrans;

public  bool isFitScale=true;

 

public void initFit(){

//  Fit Position

if(fitTrans==null)return ;

 

Vector3 position=fitTrans.localPosition;

position.x*=_Public.ratioScreen.x;

position.y*=_Public.ratioScreen.y;

position.z*=_Public.ratioScreen.z;

fitTrans.localPosition=position;

 

// Fit Scale

if(isFitScale){

 

Vector3 scale=fitTrans.localScale;

if(scale==Vector3.one){

scale.y*=_Public.ratioScreen.y;

scale.x*=_Public.ratioScreen.y;

scale.z*=_Public.ratioScreen.z;

//scale.x*=_Public.ratioScreen.x;

}

else {

scale.x*=_Public.ratioScreen.x;

scale.y*=_Public.ratioScreen.y;

scale.z*=_Public.ratioScreen.z;

}

fitTrans.localScale=scale;

 

}

}

}

public  ScreenFit[]   screenFitS;

public   Transform  backTrans;

    

// Use this for initialization

void Start () {

initScreenFit();

}

 

void initScreenFit(){

foreach(ScreenFit  screenFit in screenFitS){

screenFit.initFit();

}

 

if(backTrans==null) return ;

Vector3 scale=backTrans.localScale;

scale.x=_Public.helfScreen.x*2;

scale.y=_Public.helfScreen.y*2;

backTrans.localScale=scale;

 

}

}

 

效果图如下:960*480

800*480下

转载于:https://www.cnblogs.com/kuangwu/archive/2013/03/11/2953739.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[机器学习笔记]Note9--机器学习系统设计

继续是机器学习课程的笔记,本节课的内容主要是介绍如何设计一个机器学习系统。 首先要做什么 这节课将介绍如何设计一个机器学习系统,首先是以设计一个垃圾邮件分类器算法作为例子。 为了解决这个问题,首先要决定的是如何选择并表达特征向…

java 图片阴影_Java 为 PPT 中的图形添加阴影效果

在PowerPoint文档中,给图形添加阴影效果能增强图形的立体感,使其贴近现实效果,提升文档的美观度。 本文将展示如何使用Free Spire.Presentation for Java为PPT中的图形添加阴影效果。除了文中展示的预设阴影效果,还可以添加内部阴…

nyoj 21 三个水杯 BFS

三个水杯 时间限制:1000 ms | 内存限制:65535 KB难度:4描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只…

论文阅读(1)--Fine-grained Image Classification by Exploring Bipartite-Graph Labels

这是阅读《Fine-grained Image Classification by Exploring Bipartite-Graph Labels》这篇论文所做的笔记。 这篇论文是来自NEC实验室,是一篇有关细粒度分类/精细分类方面的论文。 0. 摘要 首先提出一个问题,给定一张食物的图片,对于一个…

java注释和注解_深入理解JAVA注解(Annotation)以及自定义注解

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。注解可以看作是一种特殊的标记,在程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。本文对 Annotation 进行了…

[机器学习笔记]Note10--支持向量机(SVM)

继续是机器学习课程的笔记,这节课的内容是介绍支持向量机(SVM)的内容。SVM是一个非常强大且流行的算法,在一些情况下,面对一些复杂的非线性问题可以提供比逻辑回归或神经网络更加简洁更加有效的结果。 优化目标 首先…

[机器学习笔记]Note11--聚类

继续是机器学习课程的笔记,本节介绍的是聚类方法,主要是K-means算法。 非监督学习 首先介绍监督学习和非监督学习的区别。一个监督学习的例子如下图,给定训练集如:{(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))},每个训练实例都有对应的标签。 …

[机器学习笔记]Note12--降维

继续是机器学习课程的笔记,本节介绍的是降维方法,这也是非监督学习中的一个问题,主要介绍主要成分分析(Principal Component Analysis,PCA)算法。 降维 动机一:数据压缩 使用降维的一个原因是…

[机器学习笔记]Note13--异常检测

继续是机器学习课程的笔记,本节课内容是异常检测,它是一个非监督学习算法,用于发现可能不应该属于一个已定义的组中的数据。 密度估计 首先是给出一个例子,如下图所示,是一个测试飞机引擎的例子,给定数据…

[机器学习笔记]Note14--推荐系统

继续是机器学习课程的笔记,本节课将介绍推荐系统的内容。 问题形式化 推荐系统是机器学习的一个非常重要的应用,在很多音乐、购物等网站都有推荐系统,如豆瓣,淘宝,网易云音乐等都是有使用到推荐系统的,因…

[机器学习笔记]Note15--大规模机器学习

继续是机器学习课程的笔记,本节内容主要是介绍大规模机器学习的内容。 大型数据集的学习 对于一个过拟合的模型,增加数据集的规模可以帮助避免过拟合,并获得一个更好的结果。 但是对于一个大规模的数据,比如有100万个数据量的训…