gpt4 book ai didi

c# - Vector3.z 初始化为正,但随后在没有任何脚本修改的情况下变为负

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:48 24 4
gpt4 key购买 nike

我正在尝试构建一些六边形网格,当我试图使用 OnDrawGizmos 可视化一些具有 7 个 Vector3 顶点的极简主义六边形时,发生了一些奇怪的事情,因为只出现了五个,缺少顶部的两个。如果我删除最后两个顶点,两个最上面的顶点会立即出现。

所以我在控制台中写下了我所有顶点的值,令人惊讶的是,前两个与后两个具有相同的值,尽管当我声明它们时它们并不相同:

hexVertices[0][0] = new Vector3(-outR/2f, 0, innR);
hexVertices[0][1] = new Vector3(outR/2f, 0, innR);
hexVertices[1][0] = new Vector3(-outR, 0, 0);
hexVertices[1][1] = new Vector3(0, 0, 0);
hexVertices[1][2] = new Vector3(outR, 0, 0);
hexVertices[2][0] = new Vector3(-outR / 2f, 0, -innR);
hexVertices[2][1] = new Vector3(outR / 2f, 0, -innR);

这给了我:

(-0.5, 0.0, -0.9)
(0.5, 0.0, -0.9)
(-1.0, 0.0, 0)
(0.0, 0.0, 0.0)
(1.0, 0.0, 0.0)
(-0.5, 0.0, -0.9)
(0.5, 0.0, -0.9)

...我认为前两个应该有正 z。我首先想到的是,由于我的顶点存储在三个数组中,我在声明顶点后将它们合并,也许问题就在那里,但事实并非如此。所以我只是在每一行之间写下我的两个顶点的值以查看反转发生的位置,似乎当 hexVertices[2][0] 被声明时, hexVertices[0][0].z 被反转,并且当声明 hexVertices[2][0] 时,hexVertices[0][1].z 也是如此。

这是某种奇怪的内存问题还是我完全遗漏了什么?

最佳答案

看起来你已经解决了,但我会继续写一个答案,这样问题就可以标记为已解决。

一个好的经验法则是为您要制作的每个独立副本使用一个new

将行分成两部分将解决您的问题:

hexVertices[i] = new Vector3[nbVerticesMin + i];
hexVertices[nbLines - 1 - i] = new Vector3[nbVerticesMin + i];

关于c# - Vector3.z 初始化为正,但随后在没有任何脚本修改的情况下变为负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53486337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com