Применяю вот такой код, и.. и ничего не меняется в динамике. Параметры изменяются, а материал нет. Но стоит только тыкнуть на материал объекта воды в редакторе, как тут же
все изменения применяются, и дальше всё работает, как положено. Чего происходит и как это победить-то?
Синтаксис:
Используется csharp
void OnEnable() {
rend = GetComponent<Renderer>();
sharedMaterial = rend.sharedMaterial;
currentWave = sharedMaterial.GetVector("_GerstnerVertexIntensity");
baseSpeed = sharedMaterial.GetVector("_BumpSpeed");
baseRotate = sharedMaterial.GetVector("_BumpRotation");
baseBump = sharedMaterial.GetFloat("_ReflectionBumpScale");
currBump = baseBump;
currentSpeed = baseSpeed;
currentRotate = baseRotate;
}
void Update() {
//изменения currentWave, currentSpeed и так далее
}
private void OnWillRenderObject() {
rend.material.SetVector("_GerstnerVertexIntensity", currentWave);
rend.material.SetVector("_BumpSpeed", currentSpeed);
rend.material.SetVector("_BumpRotation", currentRotate);
rend.material.SetFloat("_ReflectionBumpScale", currBump);
}