如何在统一脚本中更改 UV 平铺

问题描述 投票:0回答:0

我正在统一做一个游戏,我已经制作了一个脚本,我在编辑时运行该脚本以将所有并排(它们是板的区域)的多个 ProBuilder 网格合并到一个 ProBuilder 网格中,这是最终的板。然而,仅此一步并不会改变纹理的显示方式,我有一个重复的纹理覆盖每个先前分离的网格,而不是一个纹理应用于整个新建网格。

我找到了解决该问题的方法,即在选择新网格的同时打开 ProBuilder 菜单中的 UV 编辑器,选择所有面,并在 UV 自动模式下将平铺值更改为

X=0.125
Y=0.125
。我现在正尝试以编程方式重现该操作,但我还没有找到这样做的方法。

那么,如何通过脚本重现改变UV平铺的动作呢? 非常感谢。

我已将合并的对象存储在

ProBuilderMesh combinedMesh
中,我尝试使用
combinedMesh.GetUVs(0, uvs);
combinedMesh.uv;
访问它的UV,但我没有设法从那里更改这些UV以重现我目前正在手动执行的操作并且没有在互联网上找不到如何这样做。

我最有希望的尝试之一是这个,虽然它没有返回任何错误,但它没有改变纹理在网格上的显示方式:

List<Vector4> uvs = new List<Vector4>();
combinedMesh.GetUVs(0, uvs);

for(int i=0; i<uvs.Count; i++)
{
   uvs[i] = uvs[i] * 0.125f;
}

combinedMesh.SetUVs(1, uvs);
combinedMesh.RefreshUV(combinedMesh.faces);
c# unity3d uv-mapping
© www.soinside.com 2019 - 2024. All rights reserved.