您的位置:首页 > 移动开发 > Unity3D

Unity中当Uisprite组件切换图片时的小技能

2014-04-19 22:06 465 查看
NGUI应该算是unity中用的最多的组件。Uisprite是一个好同志,辛勤的帮助游戏引擎提高渲染效率。但我不太理解,为毛Uisprite的transform组件的localSize是需要设置成图片原本的大小才能正常的显示出来,为什么不是让localsize = new vector3(1,1,1)就好了呢?

这样也带来一个问题,游戏中一个带有sprite的gameobject在切换成到其他的sprite的时候,还会保持原来的sprite的transform属性不变,这样有些图片就可能在切换的过程中变得比例失调。比如看下面的两张图,我们游戏中的主角换了个动作之后,就因为图片的大小不一致而发生了拉伸。





于是,每次切换都要重新设置sprite的localSize。那从哪里可以知道sprite的大小呢,其实在sprite组件里面是没有相关的属性的,这个属性藏在sprite对应的altas中。于是,我就写了下面一段代码。专门用于切换sprite时的大小调整。代码也挺简单,应该很容易懂。

using UnityEngine;
using System.Collections;

public class SpriteHelper : MonoBehaviour
{

//调整uisprite
public static void adjustScale(UISprite uiSprite)
{
//依据spritename找到uiatlas中的sprite
UIAtlas.Sprite sprite = uiSprite.atlas.GetSprite(uiSprite.spriteName);
uiSprite.transform.localScale = new Vector3(sprite.outer.width, sprite.outer.height, 0);
}
//调整uitexture
public static void adjustScale(UITexture uiTexture)
{
Texture texture = uiTexture.mainTexture;
uiTexture.transform.localScale = new Vector3(texture.width, texture.height, 0);
}
}





好啦,现在完美解决了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐