【发布时间】:2018-08-15 08:12:42
【问题描述】:
这段代码运行缓慢(执行循环大约需要 250 毫秒)
mesh.triangles.Length 为 8700。
我在最新的 Unity 平台(版本 2018.2.3)上使用 c#。
我怀疑这是因为每次迭代我都在两个数组之间切换,即。我从三角形中取一个值,然后查找它的顶点元素。
mesh.triangles 是一个整数数组。 mesh.vertices 是 Vector3 的数组。
while (j < mesh.triangles.Length)
{
m_Particles [currentParticlePos].position = vertices[mesh.triangles[j]];
// allocate a particle to every 3rd vertex position.
j = j + 3;
currentParticlePos++;
}
【问题讨论】:
-
您如何对代码进行基准测试/分析,您是否 100% 确定 仅此循环 需要 250 毫秒?
-
我正在使用一个简单的秒表类并围绕循环代码开始/停止。实际上没有什么其他东西在运行,就像将粒子分配到顶点的简单实现一样。我按照 Unity 的要求在循环的任一侧获取/设置粒子,但我之前使用过该技术没有任何问题。