我正在尝试在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]);
}
}
}
这里是具有代码的漫反射设置的材质:
我确信我错过了一些明显的东西,但我找不到。
[编辑]如果它继承自UI.Image
而不是UI.Graphic
,则完全相同的代码正在运行。如果它继承自UI.MaskableGraphic
(UI.Graphic
的子项,UI.Image
的父项),则无效。我甚至不需要设置精灵或其他任何东西。这真的很奇怪,我仍然想了解为什么以及什么应该是正确的方法。但目前这是一种解决方法。[/编辑]