在游戏运行时如何使用C#脚本修改我的网格

问题描述 投票:-1回答:1

进入播放模式后,我试图在Unity游戏运行时连续更改脚本。我制作了一个程序生成的网格,并为脚本分配了网格碰撞器,过滤器和渲染器组件。

现在,我希望网格在游戏运行时改变高度。我认为可以在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(); 
} 
c# unity3d mesh
1个回答
0
投票

由于示例代码并未真正完成,我将指出一些常见的可能错误:

  • void Update()将根据您的帧速率调用每帧,void FixedUpdate()将以半固定帧速率调用每帧。如果希望每个(固定)帧都发生一些事情,则应将代码放在其中。在您的示例中,您仅将方法命名为void UpdateMesh(),这并不意味着它在每一帧都被调用:https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html

  • 从您发布的代码中尚不清楚,如果在void UpdateMesh()中根本没有发生任何更改。例如,没有代码可以更改顶点的位置。

© www.soinside.com 2019 - 2024. All rights reserved.