我正在尝试动态地将纹理从纹理图集应用到Unity3D中的四边形网格。
当我在立方体的网格中执行相同操作时,正面工作非常精细,但其他正面变形。所以我有想法使用一个简单的四边形,现在我面临这种情况:
图像应显示如下:
我按照下面的代码放置纹理。数学运算正常:
public int offsetX = 0;
public int offsetY = 0;
private const float offset = 0.0625f; // the rate of each texture square
void Start ()
{
Mesh mesh = GetComponent<MeshFilter>().mesh;
Vector2[] UVs = new Vector2[mesh.vertices.Length];
UVs[0] = new Vector2(offsetX * offset, offsetY * offset);
UVs[1] = new Vector2((offsetX * offset) + offset, offsetY * offset);
UVs[2] = new Vector2(offsetX * offset, (offsetY * offset) + offset);
UVs[3] = new Vector2((offsetX * offset) + offset, (offsetY * offset) + offset);
mesh.uv = UVs;
}
我该怎么做才能将纹理放在四边形网格中作为图像参考?
对于那些寻找答案的人:
我已经修复了改变着色器的尾部(偏移)和比例的问题。例:
using UnityEngine;
public class Cube : MonoBehaviour {
public int offsetX = 0;
public int offsetY = 0;
private Renderer _rend;
private Material _material;
private const float Offset = 0.0625f;
// Use this for initialization
private void Start ()
{
_rend = GetComponent<Renderer>();
_material = _rend.material;
_material.mainTextureScale = new Vector2(Offset,Offset);
}
private void Update()
{
_material.mainTextureOffset = new Vector2(offsetX*Offset,offsetY*Offset);
}
}