从纹理图集中应用四边形网格中的纹理

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

我正在尝试动态地将纹理从纹理图集应用到Unity3D中的四边形网格。

当我在立方体的网格中执行相同操作时,正面工作非常精细,但其他正面变形。所以我有想法使用一个简单的四边形,现在我面临这种情况:

enter image description here

图像应显示如下:

enter image description here

我按照下面的代码放置纹理。数学运算正常:

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;
}

我该怎么做才能将纹理放在四边形网格中作为图像参考?

c# unity3d mesh texture-mapping quad
1个回答
0
投票

对于那些寻找答案的人:

我已经修复了改变着色器的尾部(偏移)和比例的问题。例:

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.