particleSystem怎么动态修改贴图

这样写打印出来的结果是不同的贴图,但用目测来看,怎么看都没有改变效果,那么又该怎么写呢?

小写的 texture

大写虽然没有改变贴图,但是打印信息是对的,小写是会会直接报错


想来想去应该是我传的参数不对,我传的是cc.SpriteFrame,是不是应该有另外的写法?我看API传的是cc.Texture2D对象,貌似还要在该cc.Texture2D对象加入url属性,但是文档没有示例,我不知道怎么写。

particle.getComponent(cc.ParticleSystem).texture = this.particle_icons[random].getTexture();


打印出来的信息显示是对的,但是我实际目测怎么看都不对,纹理实际上并没有改变,怎么回事呢?1.6.1版本的

用大写Texture的话打印信息如下,貌似用spriteFrame类型的参数也设置成功了。只是实际目测也没有改变成功:


并没有大写的 Texutre,这个是你自己定义的

对,但是这句
particle.getComponent(cc.ParticleSystem).texture = this.particle_icons[random].getTexture();
这样写,打印信息显示打印的是texture2D对象了,后面我画红线的url也没错,可实际上还是没有改变成功啊

真机没测过,但是浏览器和模拟器都是这样。我想了想,我可以通过创建多个预制体来解决我的问题,虽然会增加一点点麻烦也无大碍。但是粒子系统这个问题还是继续存在的啊。刚刚试了1.7.2beta.1也是不行的,

那你给我一下 demo 吧,我帮你看看

particleDemo.zip (263.9 KB)
我做的粒子就是一些简单的效果,并没有做什么复杂的操作的,应该不是我写错代码

这里应该是有 bug,你先用下面的传入 url 来进行修改 texture

particle.getComponent(cc.ParticleSystem).texture = this.particle_icons[random].getTexture().url;

这样写可以了,但是好长好复杂了,希望以后能改得简单些,不然开发者第一次这样弄的话都会卡住在这里。如果能改成只需传入spriteFrame类型的参数好了,就像改变节点贴图一样

1赞

其实

你可以直接 type 写 cc.Texture2D 然后直接赋值就行了

不给这样写,保存脚本后编辑器直接报错


然后编辑器重新赋值一遍数组就可以了

对,是这样。
还有,这两种写法都是一样有效,但是打印出来的粒子组件的texture属性类型为什么是url了,文档说是texture2D类型的嘛。我一开始就是在这点上钻牛角尖的,就是只想找个texture2D的参数传进去赋值。

这个是历史遗留的问题,后面会进行统一,目前下个新版本会先支持 2 个类型的赋值,造成麻烦非常抱歉…

在1.9.2中使用正常但是在2.0.2中使用报错了请问在2.0.2应该中应该如何怎么做?

赋值

崩溃


试过其他几种好像都有问题

2.0以后不能用url定义类型了,改成type