Синтаксис:
Используется csharp
Material SetMaterialAlpha(Material mat, float alpha)
{
Material ret = new Material(mat);
ret.color = new Color(ret.color.r, ret.color.g, ret.color.b, alpha);
return ret;
}
{
Material ret = new Material(mat);
ret.color = new Color(ret.color.r, ret.color.g, ret.color.b, alpha);
return ret;
}
все это работало в корутине, и в цикле меняло альфу
Синтаксис:
Используется csharp
IEnumerator LerpObjectOpacity(Transform obj, float prev, float next, float fade_time)
{
if (next > 0.05f)
obj.renderer.enabled = true;
for (float t = 0f; t < snow_fade_time; t += Time.deltaTime)
{
SetObjectOpacity(obj, Mathf.Lerp(prev, next, t / fade_time));
yield return null;
}
if (next <= 0.05f)
obj.renderer.enabled = false;
}
private void SetObjectOpacity(Transform obj, float opacity)
{
obj.renderer.material.color = SetMaterialAlpha(obj.renderer.material.color, opacity);
}
{
if (next > 0.05f)
obj.renderer.enabled = true;
for (float t = 0f; t < snow_fade_time; t += Time.deltaTime)
{
SetObjectOpacity(obj, Mathf.Lerp(prev, next, t / fade_time));
yield return null;
}
if (next <= 0.05f)
obj.renderer.enabled = false;
}
private void SetObjectOpacity(Transform obj, float opacity)
{
obj.renderer.material.color = SetMaterialAlpha(obj.renderer.material.color, opacity);
}
в итоге когда начинала работать корутина память плавно росла... в итоге за пару минут игры используемая оператива выростала до нескольких гигов. Вроде бы GC ее немного подчищал, но если и так, то однозначно не успевал )))
заменил код на другой, правда работающий уже не с material а с color, но зато куда более оптимизированный, и самое главное - без утечек
Синтаксис:
Используется csharp
Color SetMaterialAlpha(Color color, float alpha)
{
return new Color(color.r, color.g, color.b, alpha);
}
{
return new Color(color.r, color.g, color.b, alpha);
}