- 画两个GameObject同时播放相同动画
- 然后搞一网格shader
- 一个赋值原始的shader,一个播放赋值网格的shader并按顶点法线方向外扩一些
public class Wireframe : MonoBehaviour
{
public Color LineColor;
Material m_lineMaterial;
List<Vector3> m_lineVertices;
Mesh mesh = null;
// Use this for initialization
void Start()
{
m_lineVertices = new List<Vector3>();
//m_lineMaterial = new Material(Shader.Find("Unlit/Color"));
m_lineMaterial = new Material(Shader.Find("Unlit/CustomWireframeWithTex"));
m_lineMaterial.hideFlags = HideFlags.HideAndDontSave;
m_lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
MeshFilter meshFilter = this.gameObject.GetComponent<MeshFilter>();
if (meshFilter)
{
mesh = meshFilter.mesh;
}
SkinnedMeshRenderer skinedMesh = this.gameObject.GetComponent<SkinnedMeshRenderer>();
if (skinedMesh)
{
mesh = skinedMesh.sharedMesh;
}
}
void OnRenderObject()
{
if (mesh)
{
Graphics.DrawMesh(mesh, transform.position, transform.rotation, m_lineMaterial, 0);
}
}
}
DrawMesh大小不对
直接这个方法就好
Graphics.DrawMesh(mesh,transform.localToWorldMatrix, m_WireMaterial, 0);
还有一种方法
就是不知道效率咋样,还没测
SkinnedMeshRenderer skinedMesh = this.gameObject.GetComponent<SkinnedMeshRenderer>();
if (skinedMesh)
{
skinedMesh.BakeMesh(m_BakedMesh);
}
mesh = m_BakedMesh;