- Home /
Question by
Chaosgod_Esper · Jul 27, 2013 at 07:55 PM ·
meshgetcomponentmeshfilter
Why is the MeshFilter being removed?
Hi.. I´m trying to generate a 2D terrain (like terraria) with perlin Noise.
This is my Code:
using UnityEngine;
using System.Collections;
public class NoiseMaker : MonoBehaviour {
public GameObject Dot;
public Mesh Dotmesh;
public int InBetween = 4;
private Color pixelcolor;
private Texture2D noiseTex;
private float newy;
private GameObject[] Dot2 = new GameObject[1025];
private Vector2 meshsize;
// Use this for initialization
void Start() {
Dotmesh = Dot.GetComponent<MeshFilter>().mesh;
meshsize = new Vector2(Dotmesh.bounds.size.x, Dotmesh.bounds.size.y);
noiseTex = renderer.material.mainTexture as Texture2D;
//noiseTex.GetPixels(x,y);
for(int sizex = 1; sizex<1025; sizex++){
Dot2[sizex] = Instantiate (Dot, new Vector3(sizex,0,0), Quaternion.identity) as GameObject;
newy = noiseTex.GetPixel(sizex, 1).grayscale * 10.0f;
newy = Mathf.RoundToInt(newy);
Debug.Log(newy);
Dot2[sizex].transform.position = new Vector3(Dot2[sizex].transform.position.x, newy, 0);
}
}
}
It works on the first run. But it seems like the MeshFilter of "Dot" gets removed.. the prefab only shows a "missing mesh"... Like the GetComponent deletes the Filter ._.
Why is this happening?
Comment
i now tried it with different models. Every $$anonymous$$eshFilter of a $$anonymous$$odel will be removed if targeted with that Script D:
Best Answer
Answer by Brian@Artific · Jul 30, 2013 at 07:46 PM
If you are only reading data from your prefab, use MeshFilter.sharedMesh instead of MeshFilter.mesh (which actually returns a duplicate mesh). Just be sure not to make changes to the sharedMesh, or every object that uses it will be affected.