public static void CreateGradient(GameObject gameObject, PUGameObject puGameObject, cRect bounds, cVector2 anchor, Color a, Color b, string shader) { Mesh mesh = new Mesh (); Vector3[] vertices = new Vector3[] { new Vector3 (bounds.w - bounds.w * anchor.x, bounds.h - bounds.h * anchor.y, 0.0f), new Vector3 (bounds.w - bounds.w * anchor.x, -bounds.h * anchor.y, 0.0f), new Vector3 (0.0f - bounds.w * anchor.x, bounds.h - bounds.h * anchor.y, 0.0f), new Vector3 (0.0f - bounds.w * anchor.x, -bounds.h * anchor.y, 0.0f), }; int[] triangles = new int[] { 0, 1, 2, 2, 1, 3, }; mesh.vertices = vertices; mesh.colors = new Color[4] {Color.white, Color.white, Color.white, Color.white}; mesh.triangles = triangles; mesh.RecalculateNormals (); MeshFilter filter = (MeshFilter)gameObject.GetComponent (typeof(MeshFilter)); filter.mesh = mesh; if (shader == null) { shader = "PlanetUnity/Color"; } var shaderObj = Shader.Find (puGameObject.fullShaderPath(shader)); Material mat = new Material (shaderObj); gameObject.renderer.material = mat; gameObject.renderer.material.color = a; }
public static void CreateGradient(GameObject gameObject, PUGameObject puGameObject, string meshName, cRect bounds, cVector2 anchor, Color a, Color b, string shader) { Transform model = Resources.Load<GameObject> (meshName).transform; Mesh mesh = null; foreach (Transform t in model.transform) { MeshFilter loadedFilter = (MeshFilter)t.GetComponent (typeof(MeshFilter)); if (loadedFilter != null) { mesh = loadedFilter.mesh; break; } } mesh = (Mesh)Mesh.Instantiate(mesh); /* // Scale the mesh by the width and the height... Vector3[] vertices = new Vector3[mesh.vertexCount]; for(int i = 0; i < mesh.vertexCount; i++){ Vector3 v = mesh.vertices [i]; v.x *= bounds.w; v.y *= bounds.h; vertices [i] = v; } mesh.vertices = vertices;*/ Vector3[] vertices = mesh.vertices; int i = 0; while (i < vertices.Length) { vertices [i].x *= bounds.w; vertices [i].y *= bounds.h; i++; } mesh.vertices = vertices; mesh.RecalculateBounds (); MeshFilter filter = (MeshFilter)gameObject.GetComponent (typeof(MeshFilter)); filter.sharedMesh = mesh; if (shader == null) { shader = "PlanetUnity/Color"; } var shaderObj = Shader.Find (puGameObject.fullShaderPath(shader)); Material mat = new Material (shaderObj); gameObject.renderer.material = mat; gameObject.renderer.material.color = a; }