2
我有一個遊戲物件出現問題,材質淡出&在Unity 3D項目中淡入。統一從透明度淡入效果不起作用
我在每個資產上都有一個腳本,其中有一個函數返回需要更改的材質數組。我使用一個輔助:
public float timeToDisappear = 2.0f;
void ChangeMaterialtoTransparent (Material mat) {...}
void ChangeMaterialtoFade (Material mat) {...}
void ChangeMaterialToOpaque(Material mat) {...}
每個漸變對象都有一個InvisibilityField字段,它返回其部分中的材質。數組中的所有InvisibilityField。
當時間材料褪色來了,我要求它的材料和使用
void FadeOverTime(Material[] mats)
{
foreach (Material mat in mats)
{
ChangeMaterialtoFade (mat);
StartCoroutine(TurnInvisible(mats));
}
}
爲TurnInvisible
//代碼爲結束其不是問題,它工作正常
和所有很好。
然而,當試圖線性插值回
IEnumerator ShowAndWait(Material[] mats,int index)
{
yield return StartCoroutine(Show(mats, index));
foreach (Material mat in mats) {
ChangeMaterialToOpaque (mat);
}
IEnumerator Show(Material[] mats, int index)
{
float startTime = Time.time;
InvisibilityField VF = _visibilityComponents [index];
while (Time.time < startTime + timeToDisappear)
{
foreach (Material m in mats)
{
float target = VF.GetOpacityLevel(m);
float tmp = Mathf.Lerp(0.0f,target,(Time.time - startTime)/timeToDisappear);
FadeColorTolevel(m,tmp);
print (m.name + "opacity is " + tmp + " as for " + (Time.time - startTime)/timeToDisappear);
}
yield return null;
}
}
void FadeColorTolevel(Material mat, float lvl)
{
Color Col = mat.color;
Col.a = lvl;
mat.color = Col;
}
僅揭示了一些材料(其1個模型與多材料)其他詭計保持不可見 - 有時2不同的部分用相同的材料1被揭示和1不是。
打印功能的打印結果表明,所有材料已經調整到0.995。
淡入功能幾乎與淡出功能相同,因此我不知道我做錯了什麼。
我使用Unity 5.2.0f3。 //作爲幫手,這是可以正常工作的隱形代碼
IEnumerator TurnInvisible(Material[] mats)
{
float startTime = Time.time;
while (Time.time < startTime + timeToDisappear)
{
foreach (Material m in mats)
{
float tmp = Mathf.Lerp(1.0f,0.0f,(Time.time - startTime)/timeToDisappear);
FadeColorTolevel(m,tmp);
}
yield return null;
}
}
這是一個公平的代碼,但很難說實際問題是什麼,因爲這不是一個[簡短的獨立示例]( http://sscce.org/)。建議檢查哪些「墊子」正在傳遞給'ShowAndWait'。材料是否從該列表中丟失,或者被「_transparentMaterialsNames」檢查阻止?使用調試器跟蹤數據,並能夠找到問題。 – rutter
夠公平的 主要問題是與 – user2956754
謝謝,我證實,_transparentMaterialsNames不是問題,並編輯問題,以刪除不相關的部分。 所有材料都傳遞給ShowAndWait。 和一個打印檢查表明所有14種材料都是稀釋的。 它像m.color = Col的部分;不工作 – user2956754