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时的大小调整。代码也挺简单,应该很容易懂。
好啦,现在完美解决了
这样也带来一个问题,游戏中一个带有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); } }
好啦,现在完美解决了
相关文章推荐
- 【UnityShader】设置Image组件图片透明四个方向透明渐变(Sprite原理相同)
- 【Unity&NGUI】PS裁剪UI把部分图片留着透明的部分&新建图集&调整NGUI的Sprite大小
- js组件SlotMachine实现图片切换效果制作抽奖系统
- Unity4.6 UGUI 图片打包设置(小图打包成图集 SpritePacker)
- 【小松教你手游开发】【unity实用技能】Unity图片变灰的方式
- unity2d 修改sprite填充图片
- unity 4.6新UI系统学习笔记 如何通过脚本访问并修改Text组件
- 微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
- vue2.0 使用element-ui里的upload组件实现图片预览效果
- 10.15 总结 关于unity中UI 的 物品栏的切换 属性加点 及 int与String 型的转化问题
- 【Android】图片切换组件ImageSwitcher的运用
- DelphiXE10.2.3 Android仿淘宝首页广告图片启动切换的自定义多可视化对象左右滚动组件(持续更新中)
- 【Android 开发】:UI控件之 ImageSwitcher 图片切换控件的使用
- Unity中对sprite renderer图片做进度条效果
- [Android UI]可自动切换、无限滑动的图片广告展示栏的实现分享(续1)
- [js开源组件开发]js轮播图片支持手机滑动切换
- 【小松教你手游开发】【unity实用技能】一键改变UI字体
- cocos2dx lua Sprite和ImageView切换图片
- 基于jquery的图片轮播 tab切换组件
- KING_UNITY学习之Unity2D代码动态为Sprite Renderer的Sprite赋值sprite精灵图片