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
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Unity3d 手机屏幕自动适配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多种方法实现自适应布局
- 下一篇: Supplemental Logging