Skip to content

Instantly share code, notes, and snippets.

@tetya
Created April 10, 2017 08:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tetya/f3398f61e515b93d6574a46af4cd4677 to your computer and use it in GitHub Desktop.
Save tetya/f3398f61e515b93d6574a46af4cd4677 to your computer and use it in GitHub Desktop.
using UnityEngine;
using System.Collections.Generic;
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshFilter))]
public class DynamicCreateMesh : MonoBehaviour
{
// 変更箇所 : Materialを保持するようにする
[SerializeField]
private Material _mat;
private Mesh _mesh;
private MeshFilter _filter;
private List<GameObject> _points = new List<GameObject>();
//
private void Start()
{
//頂点の設定
_mesh = new Mesh();
_mesh.vertices = new Vector3[] {
new Vector3 (0, 1f),
new Vector3 (1f, -1f),
new Vector3 (-1f, -1f),
};
_mesh.triangles = new int[] {
0, 1, 2
};
//
foreach (var pos in _mesh.vertices)
{
Debug.Log(pos);
GameObject obj = new GameObject("point");
obj.transform.SetParent(transform);
obj.transform.localPosition = pos;
_points.Add(obj);
}
// 修正箇所 : 各頂点に対してUV座標を設定しています
_mesh.uv = new Vector2[] {
new Vector2 (0.5f, 1f),
new Vector2 (1f, 0),
new Vector2 (0, 0),
};
_filter = GetComponent<MeshFilter>();
_filter.sharedMesh = _mesh;
// 変更箇所 : MeshRendererからMaterialにアクセスし、Materialをセットするようにする
var renderer = GetComponent<MeshRenderer>();
renderer.material = _mat;
}
//
void Update()
{
int len = _filter.sharedMesh.vertices.Length;
Vector3[] vec3 = new Vector3[len];
for (int i = 0 ; i < len; i++)
{
vec3[i] = _points[i].transform.localPosition;
}
_mesh.vertices = vec3;
_mesh.RecalculateNormals();
_mesh.RecalculateBounds();
_filter.sharedMesh = _mesh;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment