【发布时间】:2014-07-30 17:11:43
【问题描述】:
我需要通过附加到我的一个游戏对象的 10 种不同材料,但由于某种原因,我编写的代码不起作用。在过去的一个小时里,我一直在尝试锻炼原因,但我已经筋疲力尽了。
请有更新鲜的眼睛的人看看我是否在做一些愚蠢的事情?
public class LerpMaterials : MonoBehaviour
{
public List<Material> materials = new List<Material>();
public float lerpSpeed;
int currentMaterialNo;
Material currentMaterial;
Material targetMaterial;
bool lerpingMaterial;
float lerp;
void Start ()
{
if (materials.Count < 2) return;
currentMaterialNo = 0;
currentMaterial = materials[currentMaterialNo];
targetMaterial = materials[currentMaterialNo+1];
}
void Update ()
{
if (materials.Count < 2) return;
lerp += lerpSpeed;
renderer.material.Lerp(currentMaterial, targetMaterial, lerp);
if (lerp >= 1)
SwitchMaterial();
}
void SwitchMaterial()
{
if ( currentMaterialNo >= (materials.Count - 1) )
currentMaterialNo = 0;
else
currentMaterialNo++;
currentMaterial = materials[currentMaterialNo];
targetMaterial = materials[currentMaterialNo++];
lerp = 0;
}
}
我的列表包含每一种材料,我的网格渲染器也包含所需的材料。但是除了出现在材质渲染器中的第一个材质的实例之外,什么也没有发生。没有其他动作。
【问题讨论】:
-
您的 lerpspeed 设置为多少?
-
@b1nary.atr0phy 感谢您在 OP 接受以下来自 dewB 的答案后一年多的参与,该答案使用了我所得到的确切答案。您错误地认为 OP 在询问如何处理纹理。也许你发现这个线程正在寻找如何处理纹理,但这不是他所要求的。我没有理由相信他没有按预期使用材料 lerp。再一次,由于接受了 lerp 速度答案,因此可以假设 OP 能够在更改后使一切按预期工作。