Как я могу изменить свой me sh с помощью скрипта C# во время игры - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь изменить свой сценарий непрерывно, пока игра Unity запущена после того, как я вошел в режим игры. Я сделал процедурно сгенерированный мной sh и назначил для сценария коллайдер, фильтр и компонент рендеринга me sh.

Теперь я хочу, чтобы я sh менял высоту во время игры. Я полагаю, что это будет сделано в функции Update, но я не уверен, как бы это реализовать.

Вот что я получил до сих пор:

void Start() 
{ 
    mesh = new Mesh(); 
    MeshFilter filter = gameObject.AddComponent<MeshFilter>(); 
    MeshRenderer render = gameObject.AddComponent<MeshRenderer>(); 
    GetComponent<MeshFilter>().mesh = mesh; 
    GetComponent<Renderer>().material = grassMat; 
    CreateShape(); 
    UpdateMesh(); 
} 

void UpdateMesh() 
{
    mesh.Clear(); 
    mesh.vertices = vertices; 
    mesh.triangles = triangles; 
    MeshCollider collider = gameObject.AddComponent<MeshCollider>(); 
    mesh.RecalculateNormals(); 
} 

1 Ответ

0 голосов
/ 07 февраля 2020

Поскольку пример кода на самом деле не завершен, я укажу вам на некоторые распространенные возможные ошибки:

  • void Update () вызывается каждый кадр в зависимости от частоты кадров, void FixedUpdate () вызывается каждый кадр на полуфиксированной частоте кадров. Если вы хотите, чтобы что-то происходило в каждом (фиксированном) кадре, вы должны поместить туда свой код. В вашем примере вы только что назвали свой метод void UpdateMe sh (), что не означает, что он вызывается каждый кадр: https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html

  • от вас По опубликованному коду не ясно, есть ли изменения, происходящие в void UpdateMe sh () вообще. Например, нет кода, который изменяет позиции вершин.

...