特效切换

[复制链接]
1431 |5
kk 发表于 2023-4-7 23:20:10 | 显示全部楼层 |阅读模式
如何去实现当玩家身上有一个特效效果时,在一次变换新的特效时候,将前一个特效进行关闭
回复

使用道具 举报

空伊伊 发表于 2023-4-10 10:14:24 | 显示全部楼层
你播放特效有两种方式,

第一种是创建一个特效实例,然后用play()进行播放,stop()进行停止。因此你可以通过stop去关闭特效
let effect = await Gameplay.GameObject.asyncSpawn({ "guid": "4399" }) as Gameplay.Particle
effect.play()
effect.stop()



第二种是使用EffectService来进行特效的播放与停止
// 播放特效(EffectService播放特效会返回这个特效的播放ID,可以根据这个ID去停止对应的特效)
let effID = EffectService.getInstance().playEffectAtLocation("4399", Vector.zero)
// 停止特效
EffectService.getInstance().stopEffect(effID)



回复

使用道具 举报

kk楼主 发表于 2023-4-10 10:30:09 | 显示全部楼层
空伊伊 发表于 2023-4-10 10:14
你播放特效有两种方式,

第一种是创建一个特效实例,然后用play()进行播放,stop()进行停止。因此你可以通 ...

收到,谢谢
回复

使用道具 举报

窜稀大仙 发表于 2023-5-18 13:38:13 | 显示全部楼层
空伊伊 发表于 2023-4-10 10:14
你播放特效有两种方式,

第一种是创建一个特效实例,然后用play()进行播放,stop()进行停止。因此你可以通 ...

effectservice的这个播放功能底层是如何实现的?会不会每次执行都会实例化一个特效。作为开枪特效的话1s执行20次,会不会直接实例化20个特效。
回复

使用道具 举报

空伊伊 发表于 2023-5-18 15:42:15 | 显示全部楼层
窜稀大仙 发表于 2023-5-18 13:38
effectservice的这个播放功能底层是如何实现的?会不会每次执行都会实例化一个特效。作为开枪特效的话1s ...

如果特效本身的播放时长是大于1秒的话 ,你1秒内执行20次,那就是会存在20个实例的。不过EffectService使用了对象池,实例的数量会有一个极限,不会无限增加的
回复

使用道具 举报

窜稀大仙 发表于 2023-5-18 15:45:39 | 显示全部楼层
空伊伊 发表于 2023-5-18 15:42
如果特效本身的播放时长是大于1秒的话 ,你1秒内执行20次,那就是会存在20个实例的。不过EffectService使 ...

那我就放心了
回复

使用道具 举报

72小时热榜
热门版块
快速回复 返回顶部 返回列表