关闭

【Unity3D】【NGUI】屏幕自适应

704人阅读 评论(0) 收藏 举报
分类:

原文地址:http://blog.csdn.net/u012091672/article/details/17040985

作者:四爷如京


看过一些文章,大多数都用UIStretch。说实话我并不喜欢用这个脚本。

我一直对那些在屏幕适应上出现问题的人推荐使用UIRoot的ManualHeight。

今天提供一个脚本,临时写的,我赶脚挺好用。

使用注意:

1、和策划制定好开发时分辨率。这很重要,要保证所有UI都在同样的分辨率下制作。

2、把我这个脚本挂在UIRoot上。UIRoot的Scaling Style修改为FixedSize。

3、aspectRatioHeight、aspectRatioWidth分别为开发时的高和宽。

4、每个UIRoot都需要调整ManualHeight到和策划制定的高度。

5、Unity3D的Game窗口,调整到相应的分辨率。

附:写在Update里面完全为了方便。你可以根据自己的需求放在Start里面

[csharp] view plaincopy
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. [ExecuteInEditMode]  
  5. [RequireComponent(typeof(UIRoot))]  
  6. public class SZUIRootScale : MonoBehaviour  
  7. {  
  8.     public int aspectRatioHeight;  
  9.     public int aspectRatioWidth;  
  10.     private UIRoot root;  
  11.   
  12.     void Awake ()  
  13.     {  
  14.         root = NGUITools.FindInParents<UIRoot> (this.gameObject);  
  15.     }  
  16.       
  17.     void Update ()  
  18.     {  
  19.         float defaultAspectRatio = aspectRatioWidth * 1f / aspectRatioHeight;  
  20.         float currentAspectRatio = Screen.width * 1f / Screen.height;  
  21.         if (defaultAspectRatio > currentAspectRatio) {  
  22.             int horizontalManualHeight = Mathf.FloorToInt (aspectRatioWidth / currentAspectRatio);  
  23.             root.manualHeight = horizontalManualHeight;  
  24.         } else {  
  25.             root.manualHeight = aspectRatioHeight;  
  26.         }  
  27.     }  
  28. }  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:148734次
    • 积分:2069
    • 等级:
    • 排名:第19297名
    • 原创:18篇
    • 转载:249篇
    • 译文:3篇
    • 评论:5条
    最新评论