首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

NGUI panel使用soft clip时,屏幕缩放有关问题

2013-01-25 
NGUI panel使用soft clip时,屏幕缩放问题我发现把那个panel的LocalScale的x,y,z的改成一样的就行了。我把他

NGUI panel使用soft clip时,屏幕缩放问题

我发现把那个panel的LocalScale的x,y,z的改成一样的就行了。我把他们的LocalScale.x和z都等于了y。再改一下Clipping的大小。效果不是最佳的,先将就着吧,呵呵~~~
对了,代码里面在Start里面运行SetPanel()时,最好用StartCoroutine或者Invoke,或者先yield一秒,我怕UI还没缩放就运行了就不好了,呵呵~~~我这里没写,你们自己写哈,呵呵~~~

using UnityEngine;using System.Collections;public class SubPanelPosition : MonoBehaviour {public ScreenDirection screenDirection;//horizontal表示水平滑动;vertical表示垂直滑动。public enum ScreenDirection {horizontal,vertical}public float size;private Transform parent;private Transform child;private float ScaleSize;private float rateX;private float rateY;UIPanel PanelScript;void Start(){Invoke("SetPanel",0.5f);}void SetPanel(){parent = transform.parent;child = transform.GetChild(0);PanelScript = transform.GetComponent<UIPanel>();transform.parent = null;child.parent = null;if(screenDirection == ScreenDirection.vertical){    rateX =  Screen.width/size;rateY = 1;ScaleSize = transform.localScale.y;}else if(screenDirection == ScreenDirection.horizontal){rateX = 1;            rateY = Screen.height/size;ScaleSize = transform.localScale.x;}transform.localScale = new Vector4(ScaleSize,ScaleSize,ScaleSize,ScaleSize);transform.parent = parent;child.parent = transform;PanelScript.clipRange = new Vector4(PanelScript.clipRange.x,PanelScript.clipRange.y,PanelScript.clipRange.z * rateX,PanelScript.clipRange.w * rateY); }}

 

NGUI panel使用soft clip时,屏幕缩放有关问题

注:其中Screen Direction表示水平还是垂直滑动,如果是水平的话Size就是你当前发布时的Screen.width,如果是垂直的话,size就是Screen.height。

 

看看第二种方法,和前面差不多,改了一点~~~

using UnityEngine;using System.Collections;public class SubPanelPosition : MonoBehaviour {public ScreenDirection screenDirection;//horizontal表示水平滑动;vertical表示垂直滑动。public enum ScreenDirection {horizontal,vertical}private Transform parent;private Transform child;private float ScaleSize;private float rateX;private float rateY;UIPanel PanelScript;void Start(){parent = transform.parent;child = transform.GetChild(0);PanelScript = transform.GetComponent<UIPanel>();}void SetPanel(){transform.parent = null;child.parent = null;if(screenDirection == ScreenDirection.vertical){ScaleSize = transform.localScale.y;rateX = ScaleSize/transform.localScale.x;rateY = 1;}else if(screenDirection == ScreenDirection.horizontal){ScaleSize = transform.localScale.x;rateX = 1;rateY = ScaleSize/transform.localScale.y;}transform.localScale = new Vector4(ScaleSize,ScaleSize,ScaleSize,ScaleSize);transform.parent = parent;child.parent = transform;PanelScript.clipRange = new Vector4(PanelScript.clipRange.x,PanelScript.clipRange.y,PanelScript.clipRange.z * rateX,PanelScript.clipRange.w * rateY); }}


 

1楼sgz_1990昨天 13:04
哥们 请教个问题。。。你整个ui场景的缩放是怎么实现的 用的UIStretch ? 还是?n还有 这个脚本你挂在哪? 挂在Clip panel下的Grid上 还是?n初学者 多多指教
Re: dlnuchunge昨天 16:49
回复sgz_1990nui的缩放用UIStretch,脚本挂在Clip panel上面噢~~~

热点排行