开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:531

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 744|回复: 5

[技术讨论] 粒子系统的Start Delay问题

[复制链接]  [移动端链接]
3偶尔光临
161/300
排名
10863
昨日变化
2

3

主题

38

帖子

161

积分

Rank: 3Rank: 3Rank: 3

UID
58347
好友
0
蛮牛币
756
威望
0
注册时间
2014-11-28
在线时间
40 小时
最后登录
2018-6-10
发表于 2018-3-7 20:48:38 | 显示全部楼层 |阅读模式
5蛮牛币
我设置粒子.StartDelay = 10; 正常情况下应该是等待10秒 然后发射粒子。
我在等待过程中的第5秒的时候 Pause粒子 然后再重新Play 。。
发现是又等待10秒才发射粒子 而不是走完剩下的5秒直接发射。


请问怎么解决这个问题

[发帖际遇]: 一个袋子砸在了 jonny91 头上,jonny91 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

5熟悉之中
572/1000
排名
4388
昨日变化

1

主题

106

帖子

572

积分

Rank: 5Rank: 5

UID
236305
好友
0
蛮牛币
784
威望
0
注册时间
2017-8-7
在线时间
171 小时
最后登录
2018-6-19
发表于 2018-3-7 20:48:39 | 显示全部楼层
本帖最后由 SrMao_e432t 于 2018-3-8 16:36 编辑
jonny91 发表于 2018-3-8 13:12
那请问有什么办法 暂停前面的等待时间吗?

目前没有,感觉支持不是很好,目测当前的机制就是暂停以后会重新count start delay。

实验下面3个情况以后

1。我粒子自带delay是3s,没有脚本,实际执行时间3s,但是pause以后粒子的delay从头开始计算,如果我从2s处开始pause再恢复,那粒子实际发射生效是2s+3s以后。

2。我粒子自带delay是0,脚本设置是5s,那实际执行时间是5s,中间暂停不受任何影响。

3。我粒子自带delay是3秒,我脚本设置是5s后执行,那实际执行时间是8s以后,任何时间暂停都不受影响。

结合来看应该是start delay到了以后,粒子Play()然后emit。只要Play()以后的start delay都不再受影响,如情况3。

所以delay设置成0,用脚本控制最好。脚本控制的Play(),而自带的start delay控制的是在Play()以后的发射延迟。
至于为什么暂停以后这个发射延迟会重新计数目前未知。在Simulate里也会重置。应该是unity本身的问题。

附上code
[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;

public class TestDelay : MonoBehaviour
{
    public float delayTime;

    void Start()
    {
        Invoke("DelayFunc", delayTime);
    }

    void DelayFunc()
    {
        this.GetComponent<ParticleSystem>().Play();
    }
}





回复

使用道具 举报

5熟悉之中
572/1000
排名
4388
昨日变化

1

主题

106

帖子

572

积分

Rank: 5Rank: 5

UID
236305
好友
0
蛮牛币
784
威望
0
注册时间
2017-8-7
在线时间
171 小时
最后登录
2018-6-19
发表于 2018-3-8 10:07:25 | 显示全部楼层
给粒子本身上个脚本 里面设定等待的时间 开始以后进行计时
时间到了执行particle.Play()吧

回复

使用道具 举报

3偶尔光临
161/300
排名
10863
昨日变化
2

3

主题

38

帖子

161

积分

Rank: 3Rank: 3Rank: 3

UID
58347
好友
0
蛮牛币
756
威望
0
注册时间
2014-11-28
在线时间
40 小时
最后登录
2018-6-10
 楼主| 发表于 2018-3-8 13:12:11 | 显示全部楼层
SrMao_e432t 发表于 2018-3-8 10:07
给粒子本身上个脚本 里面设定等待的时间 开始以后进行计时
时间到了执行particle.Play()吧 ...

那请问有什么办法 暂停前面的等待时间吗?

回复

使用道具 举报

3偶尔光临
161/300
排名
10863
昨日变化
2

3

主题

38

帖子

161

积分

Rank: 3Rank: 3Rank: 3

UID
58347
好友
0
蛮牛币
756
威望
0
注册时间
2014-11-28
在线时间
40 小时
最后登录
2018-6-10
 楼主| 发表于 2018-3-8 16:38:29 | 显示全部楼层
SrMao_e432t 发表于 2018-3-7 20:48
目前没有,感觉支持不是很好,目测当前的机制就是暂停以后会重新count start delay。

实验下面3个情况以 ...

确实。。我也感觉是Unity的问题。。我现在没有Play和Pause方法。用了simulateSpeed去控制暂停还是播放

回复

使用道具 举报

4四处流浪
347/500
排名
12848
昨日变化
3

0

主题

145

帖子

347

积分

Rank: 4

UID
222161
好友
0
蛮牛币
73
威望
0
注册时间
2017-5-15
在线时间
143 小时
最后登录
2018-5-17
发表于 2018-3-13 13:16:27 | 显示全部楼层
寒风冻死我

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表