【Unity&UGUI】动态改变精灵物体的图片
来源:互联网 发布:java数组最大长度限制 编辑:程序博客网 时间:2024/04/28 09:55
Sprite Packer打包
动态改变精灵物体的图片
1.改变这个原有的精灵的图片
2.在资源库里面生成一个新的精灵
---------1.改变这个原有的精灵的图片
首先在这个。CS文件类下面声明一个SpriteRenderer变量
private SpriteRenderer image;
在Start初始化函数里面,初始化上面声明的SpriteRenderer变量
image = this.GetComponent<SpriteRenderer>();
这句代码是实际改变UGUI的2DSprite精灵物体的精灵
image.sprite= Resources.Load("123/94", typeof(Sprite)) as Sprite;//这里就是修改他的图片,
测试用的图片实际就是原图片的设置,只不过因为,Unity的动态生成的资源只能放在Resources文件夹下面
因此直接把这个图片放入到Resources文件夹下面,
再次声明使用UGUI的Sprite Packer打包精灵图片是无法在Resources文件夹里面打包的
UGUI的Sprite Packer打吧精灵图片成图集的文章:
【Unity&Atlas】NGUI与UGUI打包图集的步骤以及比较
---------2.在资源库里面生成一个新的精灵
sprite.create方法
如果使用这两行代码生成物体
GameObject teset = Resources.Load("123/94") as GameObject;
GameObject prefab_left_Instance = Instantiate(teset);
会报错,错误如下所示
ArgumentException: The Object you want to instantiate is null.
因为94这个图片不是预制体物体,是图片。NullReferenceException: Object reference not set to an instance of an object
声明为 private Image image;
代码如下所示
Texture2D img = Resources.Load("123/94") as Texture2D;
Sprite pic = Sprite.Create(img, new Rect(0, 0, img.width, img.height), new Vector2(0.5f, 0.5f));//后面Vector2就是你Anchors的Pivot的x/y属性值
image.sprite = pic;
会报错,NullReferenceException: Object reference not set to an instance of an object
可能是因为测试的New Sprite (2)精灵物体没有Image组件,但是为这个为这个精灵添加了Image组件(Compont---UI---Image)的时候
还是报错
参考这篇如何动态设置 Image的Sprite?
获得当前物体的 SpriteRenderer组件(UGUI的是SpriteRenderer组件,NGUI是UI Sprite,或者是UI2D Sprite)
SpriteRenderer spr = gameObject.GetComponent<SpriteRenderer>();//获得当前物体的 SR组件
Texture2D img = Resources.Load("123/94") as Texture2D;//创建一个Texture2D物体(并没有实际显示在UNITY当中),加载
//调用Sprite.Create函数,创建一个精灵(也没有实际显示在UNITY当中)
Sprite pic = Sprite.Create(img, new Rect(0, 0, img.width, img.height), new Vector2(0.5f, 0.5f));//后面Vector2就是你Anchors的Pivot的x/y属性值
spr.sprite = pic;//把当前物体的精灵替换成 上面创建的精灵 pic,(这个时候就会实际显示在UNITY当中)
效果如下所示
参考资料:
UGUI中将图片转换成精灵Sprite
12:unity3D-Resources加载预制体与Sprite精灵图片
UGUI怎么获取Image,怎么动态的更换Image
- 【Unity&UGUI】动态改变精灵物体的图片
- 【Unity&NGUI&UGUI】2D精灵物体变色彩透明以及图片高亮变色的方法
- unity 动态改变所有子物体的shader
- Unity中动态改变物体的Material(Shader)
- 【Unity】关于精灵物体创建的看法
- unity 改变物体的颜色
- 【Unity教程】UGUI中如何动态生成精灵的几种方法
- 【Unity&精灵】如何通过已知道的坐标获取物体&动态生成墙壁
- [Unity&精灵&对象]使用Instantiate,Resource.Load动态生成物体
- unity 改变子物体的层级顺序
- Unity通过UGUI的Slider调整物体颜色
- 【Unity&IUnity精灵&Unity物体】生成&控制大量物体的时间考究
- unity改变物体轴心
- UGUI中动态改变image的sprite
- UGUI是否也能通过改变精灵的名字来替换精灵
- Unity 动态修改UGUI的Image
- 【Unity精灵】2D精灵图片替换常见的问题
- Unity UGUI 图片模糊
- ListView和ArrayAdapter、SimpleAdapter适配器的简单使用
- 常用SQL命令
- 百度BAE应用引擎在Java下的使用
- Spring笔记(3) —— 面相切面编程(aspect of programming)
- 内部赛题目 求一个数能否被3整除 求每一位数的和时 要减去字符0
- 【Unity&UGUI】动态改变精灵物体的图片
- 还有 3 天,苹果就要关上 HTTP 大门了
- 闭包的相关解释合集(来源于知乎)
- AsyncTask源码解析,你需要摸清的细节
- 本人第一次写博客
- 安卓EditText监听内容变化,实时获取编辑框内容
- RecyclerView更全解析之 - 打造通用的万能Adapter
- Connection.setAutoCommit使用的注意事项
- OnPaint中画图遇到的问题