在UGUI中想设置一张全屏的背景图,但是直接设置 screen.width和screen.height后发现在有些分辨率下还是不能全屏。
1 2 3 |
rectTransform.sizeDelta = new Vector2(Screen.width,Screen.height); |
把如下脚本挂在需要全屏的Image对象上即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using UnityEngine; using System.Collections; public class UIMaskLayer : MonoBehaviour { void Start() { int width = Screen.width; int height = Screen.height; int designWidth = 960;//开发时分辨率宽 int designHeight = 640;//开发时分辨率高 float s1 = (float)designWidth / (float)designHeight; float s2 = (float)width / (float)height; if(s1 < s2) { designWidth = (int)Mathf.FloorToInt(designHeight * s2); } else if(s1 > s2) { designHeight = (int)Mathf.FloorToInt(designWidth / s2); } float contentScale = (float)designWidth/(float)width; RectTransform rectTransform = this.transform as RectTransform; if(rectTransform != null){ rectTransform.sizeDelta = new Vector2(designWidth,designHeight); } } } |
如果你有更好的办法,欢迎在下面吐槽,嘿嘿~
- 本文固定链接: https://www.xuanyusong.com/archives/3441
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
contentScale定义了,但没用到。。。。
直接把图片的对齐在RectTransform设直接把图片的对齐在RectTransform设置成四角对齐应该也可以达到这个效果吧置成四角对齐应该也可以达到这个效果吧
UGUI里面有个plane好像就是全屏的,虽然上面有个image组件,但是我把他换成rawimage照样还是全屏,UGUI的自适应真心方便,嘎嘎
不错。。 感谢你的分享,,之前我也不知道。 我试过一下, 果然是自适应的。。
之前想不明白怎么回事,今天看了3楼的答案,看了下plane果然是锚点在角上
panel 跟父级有关, 可以这样写:
public class tool_FullScreen : MonoBehaviour
{
public int Expand = 0;
void Start()
{
RectTransform rectTransform = this.transform as RectTransform;
if (rectTransform == null)
return;
rectTransform.anchorMax = Vector3.zero;
rectTransform.anchorMin = Vector3.zero;
rectTransform.pivot = Vector2.zero;
rectTransform.position = Vector3.zero;
rectTransform.sizeDelta = new Vector2(Screen.width + Expand, Screen.height + Expand);
}
}
contentScale这个临时变量没用到?
雨松大神,请问你有利用UGUI实现过英雄的血条吗。我在UGUI中的坐标转换老是没成功,可以给个思路嘛
恩 ,和NGUI思路一样
之前尝试了用NGUI的方法来转换。一直都没成功过。不过现在找到另一个解决方法。谢谢哈
请问雨凇大神,在UGUI中你们是做单scene,还是多scene,单scene中,你们的页面跳转是如何做的啊?
每个界面一个prefab如果界面复杂 同时打开一个prefab可能会卡。 所以复杂的界面会拆成多多部分 不在一帧内全打开。
那请问有没有这方面比较好的粒子啊?想了解下大家都是怎么管理的。
我给你说一下我现在的思路吧。。当图片拖进文件夹后,tag的名字会自动设置成文件夹名字。 也就是说同一个文件夹下的图片会是一个图集。。 然后对应文件夹会生成一个prefab 绑定上一个脚本,上面有一个字典的属性。 把该文件夹下的所有sprite都关联在脚本上上。。 这个prefab就可以放在resources下面。。 运行的时候载入prefab 读取 prefab上的脚本上的字典, 通过名字就可以把sprite取出来了。
我对他的锚点有点纠结, 其实在很多情况下在对局部区域锚点时,应该要有个一最大和最小的限制。不知道是不是我用的方法不对
我觉得直接scale更方便,他的子物体一起等比例缩放了
Unity3D怎么让用户导入FBX文件啊?
Unity3D怎么让用户导入FBX文件啊?
直接设置锚点 为四角 就应该可以了吧
有可能会变形,比例不一样时。
直接把图片的对齐在RectTransform设置成四角对齐应该也可以达到这个效果吧
感谢MOMO大神。!!!