Unity研究院之提前獲取粒子特效的播放時長
雨松MOMO 【Unity雜文】 圍觀2139次 13條評論 編輯日期:2015-05-29 字體:大 中 小
<iframe id="cproIframe_u1121907_1" width="300" height="250" src="http://pos.baidu.com/acom?adn=4&at=134&aurl=&cad=1&ccd=24&cec=UTF-8&cfv=18&ch=0&col=zh-CN&conOP=0&cpa=1&dai=1&dis=0&layout_filter=rank%2Ctabcloud<r=http%3A%2F%2Fwww.xuanyusong.com%2Farchives%2Fcategory%2Funity%2Funity%25E6%259D%2582%25E6%2596%2587<u=http%3A%2F%2Fwww.xuanyusong.com%2Farchives%2F3512&lunum=6&n=92004029_cpr&pcs=1920x946&pis=10000x10000&ps=369x1329&psr=1920x1080&pss=1920x409&qn=bd0c6730c63dd5e5&rad=&rsi0=300&rsi1=250&rsi5=4&rss0=%23FFFFFF&rss1=%23FFFFFF&rss2=%230000FF&rss3=%23444444&rss4=%23008000&rss5=&rss6=%23e10900&rss7=&scale=&skin=&td_id=1121907&tn=text_default_300_250&tpr=1447383279670&ts=1&version=2.0&xuanting=0&dtm=BAIDU_DUP2_SETJSONADSLOT&dc=2&di=u1121907&ti=Unity%E7%A0%94%E7%A9%B6%E9%99%A2%E4%B9%8B%E6%8F%90%E5%89%8D%E8%8E%B7%E5%8F%96%E7%B2%92%E5%AD%90%E7%89%B9%E6%95%88%E7%9A%84%E6%92%AD%E6%94%BE%E6%97%B6%E9%95%BF%20%7C%20%E9%9B%A8%E6%9D%BEMOMO%E7%A8%8B%E5%BA%8F%E7%A0%94%E7%A9%B6%E9%99%A2&tt=1447383279630.41.68.70" align="center,center" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; font-family: inherit;"></iframe>
有時候需要在播放粒子特效前就清楚的知道粒子特效將播放多久。查了一下Unity的API發現ParticleSystem的duaration屬性真的好坑爹,因爲不準。。。 不信你可以試試。
下面說計算特效時長的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
static
float
ParticleSystemLength(Transform
transform)
{
ParticleSystem
[]particleSystems
=
transform.GetComponentsInChildren<ParticleSystem>();
float
maxDuration
=
0;
foreach(ParticleSystem
ps
in
particleSystems){
if(ps.enableEmission){
if(ps.loop){
return
-1f;
}
float
dunration
=
0f;
if(ps.emissionRate
<=0){
dunration
=
ps.startDelay
+
ps.startLifetime;
}else{
dunration
=
ps.startDelay
+
Mathf.Max(ps.duration,ps.startLifetime);
}
if
(dunration
>
maxDuration)
{
maxDuration
=
dunration;
}
}
}
return
maxDuration;
}
|
OK 這就算出來。 歡迎大家在下面留言,一起討論開發技巧~嘿嘿。