为什么所有立方体的纹理UV贴图都发生了更改



我正在尝试更改和调整Unity中立方体中bilt表面的纹理。没有任何问题,我设法用这个代码在每张脸上放上了不同的图像:

void Start()
{
    Mesh mesh = GetComponent<MeshFilter>().mesh;
    Vector2[] UVs = new Vector2[mesh.vertices.Length];
    // Front
    UVs[0] = new Vector2(0.0f, 0.0f);
    UVs[1] = new Vector2(0.333f, 0.0f);
    UVs[2] = new Vector2(0.0f, 0.333f);
    UVs[3] = new Vector2(0.333f, 0.333f);
    // Top
    UVs[4] = new Vector2(0.334f, 0.333f);
    UVs[5] = new Vector2(0.666f, 0.333f);
    UVs[8] = new Vector2(0.334f, 0.0f);
    UVs[9] = new Vector2(0.666f, 0.0f);
    // Back
    UVs[6] = new Vector2(1.0f, 0.0f);
    UVs[7] = new Vector2(0.667f, 0.0f);
    UVs[10] = new Vector2(1.0f, 0.333f);
    UVs[11] = new Vector2(0.667f, 0.333f);
    // Bottom
    UVs[12] = new Vector2(0.0f, 0.334f);
    UVs[13] = new Vector2(0.0f, 0.666f);
    UVs[14] = new Vector2(0.333f, 0.666f);
    UVs[15] = new Vector2(0.333f, 0.334f);
    // Left
    UVs[16] = new Vector2(0.334f, 0.334f);
    UVs[17] = new Vector2(0.334f, 0.666f);
    UVs[18] = new Vector2(0.666f, 0.666f);
    UVs[19] = new Vector2(0.666f, 0.334f);
    // Right        
    UVs[20] = new Vector2(0.667f, 0.334f);
    UVs[21] = new Vector2(0.667f, 0.666f);
    UVs[22] = new Vector2(1.0f, 0.666f);
    UVs[23] = new Vector2(1.0f, 0.334f);
    mesh.uv = UVs;
    GetComponent<MeshFilter>().mesh = mesh
     }

这是有效的,但它只使用附加到立方体/着色器的纹理(纹理图谱??)。我想知道是否可以使用两个不同的纹理集,例如,我有4个面具有纹理1的部分,2个面具有质地2的部分。或者可以通过使用6种不同纹理的代码生成纹理图谱?PackTexture()方法可以用于此吗?

要使用更多纹理,需要单独的子网格。使用单独的子网格Unity可以附加其他材质和其他纹理。

看看

http://docs.unity3d.com/ScriptReference/Mesh.SetTriangles.html

例如,使用此代码创建一个脚本,并将其附加到具有立方体的GameObject。

void Awake () 
{
    Mesh currentMesh = this.GetComponent<MeshFilter>().mesh;
    int[] submesh0 = new int[]{0,2,3,0,3,1,8,4,5,8,5,9,10,6,7,10,7,11,12,13,14,12,14,15};
    int[] submesh1 = new int[]{16,17,18,16,18,19, 20,21,22,20,22,23};
    currentMesh.subMeshCount=2;
    currentMesh.SetTriangles(submesh0,0);
    currentMesh.SetTriangles(submesh1,1);
}

清醒后,将两种材料连接到立方体上,它用于4面一种材料,用于另2面另一种材料。

请注意,这不是最好的方法。使用两种材料打破统一优化,需要两个单独的绘制调用(更昂贵)。

相关内容

最新更新