将纹理应用于UI.Graphic继承的对象

时间:2016-09-14 13:43:02

标签: user-interface unity3d unity5

我正在尝试在Unity UI中显示网格。我的类继承自UI.Graphic。我设法让它适用于我的顶点和颜色,但似乎我无法为网格设置纹理。我尝试了不同的东西,但没有任何效果:

  • 尝试在material
  • 上设置CanvasRenderer字段
  • 尝试在material
  • 上设置Graphic字段

关于这一切的文档非常糟糕,我找到的大部分代码示例(主要是如何设置顶点)都已过时。

以下是我设置顶点的代码:

protected override void OnPopulateMesh(VertexHelper vh)
{
    base.OnPopulateMesh(vh);
    vh.Clear();
    if( m_SkinData != null )
    {
        int j = 0;
        foreach( SkinVertex vert in m_SkinData.m_Vertices )
        {
            float channel = j / (float)m_SkinData.m_Vertices.Count;
            Color32 col = new Color(channel, channel, channel);
            vh.AddVert(m_Vertice[j], col, m_uv[j]);
            j++;
        }

        for( int i = 0; i < m_SkinData.m_Indices.Count; i += 3 )
        {
            vh.AddTriangle(m_SkinData.m_Indices[i], m_SkinData.m_Indices[i + 1], m_SkinData.m_Indices[i + 2]);
        }
    }
}

结果如下: enter image description here

这里是具有代码的漫反射设置的材质:

enter image description here

我确信我错过了一些明显的东西,但我找不到。

[编辑]如果它继承自UI.Image而不是UI.Graphic,则完全相同的代码正在运行。如果它继承自UI.MaskableGraphicUI.Graphic的子项,UI.Image的父项),则无效。我甚至不需要设置精灵或其他任何东西。这真的很奇怪,我仍然想了解为什么以及什么应该是正确的方法。但目前这是一种解决方法。[/编辑]

0 个答案:

没有答案