资源描述:
《unity强制屏幕纵宽比脚本》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Unity强制屏幕纵宽比脚本Xiaoke'sBlog,unity3d中文网站,Unity3D中文网,unity3d中文论坛,unity3d学习社区,unity3d教程,Unity3D教学,Unity3D专业,unity3d中国,unity,unity开发,unityios,unityandroid,unity3d游戏,unity游戏,unity3d官网,unity中国官网,Unity强制屏幕纵宽比脚本-XiaoKe'sBlogXiaoKe'sBlog无止境的夜~瞬息万变~一下开心~一下皱眉~首页生活琐事日常工作技术日志我的成果杂七杂八访客留言论坛上一篇
2、下一篇技术日志
3、Unity强制屏幕纵宽比脚本作者:威阿日期:2012-11-22字体大小:小中大强制屏幕到所需要的长宽比,可以根据需要自由选择是否应用强制比例.其中包括返回校正后的屏幕宽度,高度(Screen.width/height)和鼠标位置(Input.mousePosition).将这个脚本放在编译顺序较优先的文件夹中,比如StandardAssets,(Plugins是最先编译的),因此你可以用Js,C#等语言调用AspectUtility来使用它.首先要将它附加到Camera上,它同样可以附加给其他物体,如果你赋给其他物体,它将主动尝试找到标签为"MainCamera"的
4、相机.对于WantedAspectRatio这个值,常见的是4:3为1.333333,16:10为1.6,16:9为1.777778,如果屏幕的纵宽比与设定的相同,不会有任何变化.如果与设定的纵宽比不同,将用黑色填充缺少的部分.这样会导致有些方法返回不正确,比如Screen.width和Screen.height会返回实际屏幕尺寸,而不是主相机的尺寸,为了纠正这个问题,可以使用AspectUtility.screenWidth和AspectUtility.screenHeight.同样的,Input.mousePosition也会有些问题,这种情况可以使用Aspect
5、Utility.mousePosition获取需要的值.有一点要注意,这些变量在脚本刚唤醒的时候可能不能正确获取到,这就需要等待脚本开始后再访问它们.当屏幕尺寸变化,例如Webplayer,采用4:3的比例,用户切换全屏后变成了16:9,这时候就需要用AspectUtility.SetCamera()重设脚本相机.OnGUI代码在用AspectRatioEnforcer时需要做一些额外的工作.OnGUI的代码独立于Camera画在屏幕上的.所以相机改变了矩阵尺寸,它不会自动变化.这时候我们要特别处理一下.如果你是用GUILayout来排列GUI,可以用GUILayou
6、t.BeginArea和EndArea来定义一个范围,像下面这样:js代码?12345functionOnGUI(){GUILayout.Label("Hello");GUILayout.Label("there");}修改它为:js代码?12345678functionOnGUI(){GUILayout.BeginArea(AspectUtility.screenRect);GUILayout.Label("Hello");GUILayout.Label("there");GUILayout.EndArea();}如果已经用过BeginArea/EndArea,你可
7、以直接在外面再嵌套AspectUtility.screenRect,它仍旧会处理好的.如果你没有使用GUILayout,那么可以添加x和y的偏移来修正所有GUI的Rect,可以用AspectUtility.xOffset和AspectUtility.yOffset来得到偏移量,比如你平时这样写:js代码?12345functionOnGUI(){GUI.Label(Rect(50,50,100,30),"Hello");GUI.Label(Rect(75,75,100,30),"there");}现在改成:js代码?12345678functionOnGUI(){va
8、rx=AspectUtility.xOffset;vary=AspectUtility.yOffset;GUI.Label(Rect(x+50,y+50,100,30),"Hello");GUI.Label(Rect(x+75,y+75,100,30),"there");}通常在OnGUI里获得鼠标位置用的是Event.current.mousePosition,在这里我们应该改使用AspectUtility.guiMousePosition.AspectUtility.cs脚本csharp代码?123456789101112131415161718