最近在开发我的世界类游戏, 有用到mesh的uv绑定。需要将这个材质纹理绑定到一个正方体上,在网上找的代码绑定有问题,遂自己研究绑定关系。
这是每个面对应的uv数字的索引值
using UnityEngine;
public class MapTexture : MonoBehaviour
{
void Start()
{
MeshFilter mf = GetComponent<MeshFilter>();
if (mf == null) return;
Mesh mesh = mf.mesh;
if (mesh == null || mesh.uv.Length != 24)
{
Debug.Log("Attach to a cube");
return;
}
Vector2[] uvs = mesh.uv;
//前面
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);
//上
uvs[8] = new Vector2(0.334f, 0.0f);
uvs[9] = new Vector2(0.666f, 0.0f);
uvs[4] = new Vector2(0.334f, 0.333f);
uvs[5] = new Vector2(0.666f, 0.333f);
//后
uvs[10] = new Vector2(0.667f, 0.0f);
uvs[11] = new Vector2(1.0f, 0.0f);
uvs[6] = new Vector2(0.667f, 0.333f);
uvs[7] = new Vector2(1.0f, 0.333f);
//下
uvs[12] = new Vector2(0.0f, 0.334f);
uvs[15] = new Vector2(0.333f, 0.334f);
uvs[13] = new Vector2(0.0f, 0.666f);
uvs[14] = new Vector2(0.333f, 0.666f);
uvs[16] = new Vector2(0.334f, 0.334f);
uvs[19] = new Vector2(0.666f, 0.334f);
uvs[17] = new Vector2(0.334f, 0.666f);
uvs[18] = new Vector2(0.666f, 0.666f);
uvs[20] = new Vector2(0.667f, 0.334f);
uvs[23] = new Vector2(1.0f, 0.334f);
uvs[21] = new Vector2(0.667f, 0.666f);
uvs[22] = new Vector2(1.0f, 0.666f);
mesh.uv = uvs;
}
}
最终效果如下!