frkx316 Geschrieben 30. Mai 2020 Melden Share Geschrieben 30. Mai 2020 Guten Tag, Ich schreibe zur Zeit ein Editorscript. Dieses soll über einen Button ein Gameobject in eine Liste einfügen, ein von mir erstelltes Mesh anlegen und auf dem Bildschrim angezeigt werden. public class MeshEditor : EditorWindow { GameObject myPrefab; public Mesh mes1; int krei = 2; int ring = 3; List<GameObject> branchs = new List<GameObject>(); List<Mesh> mes = new List<Mesh>(); ObjectScript scrix = new ObjectScript(); [MenuItem("Window/MeshEditor")] public static void Showwindow() { GetWindow<MeshEditor>("MeshEditor"); } private void Awake() { myPrefab = new GameObject("myPrefab"); myPrefab.AddComponent<MeshRenderer>(); myPrefab.AddComponent<MeshFilter>(); myPrefab.AddComponent<Renderer>(); Renderer Rend = myPrefab.GetComponent<Renderer>(); Rend.material = new Material(Shader.Find("Specular")); Rend.material.color = Color.green; } private void OnGUI() { krei = EditorGUILayout.IntField("Kreispunkte", krei); if (krei < 3) { krei = 3; } ring = EditorGUILayout.IntField("Ringanzahl", ring); if (ring < 2) { ring = 2; } if (GUILayout.Button("Add")) { branchs.Add(myPrefab); mes.Add(mes1); mes[branchs.Count - 1] = branchs[branchs.Count-1].GetComponent<MeshFilter>().mesh; mes[branchs.Count - 1].Clear(); mes[branchs.Count - 1].vertices = MeshGen.Creatvertices(ring,krei); mes[branchs.Count - 1].triangles = MeshGen.Createtriangles(ring, krei); mes[branchs.Count - 1].RecalculateNormals(); Instantiate(branchs[branchs.Count - 1]); } } Folgendes funktioniert: pro "Add" bekomme ich ein gameobject mit einem richtig produzierten Mesh Folgendes funktioniert nicht: bei jedem neu produzierten Object verändern sich alle Meshes der älteren Objecte so dass alle gleich aussehen Mein ziel ist es Verschiedene Meshes zu produzieren und sie am Ende via Mesh.CombineMeshes zu einem zu vereinen Vielen Dank im Vorraus 🙂 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
frkx316 Geschrieben 30. Mai 2020 Autor Melden Share Geschrieben 30. Mai 2020 Edit: gibt es vielleicht eine Alternative zu Instantiate() ? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
frkx316 Geschrieben 30. Mai 2020 Autor Melden Share Geschrieben 30. Mai 2020 Hat sich erledigt, ich habe es gelöst public class MeshEditor : EditorWindow { int krei = 2; int ring = 3; List<GameObject> branchs = new List<GameObject>(); List<Mesh> mes = new List<Mesh>(); ObjectScript scrix = new ObjectScript(); [MenuItem("Window/MeshEditor")] public static void Showwindow() { GetWindow<MeshEditor>("MeshEditor"); } private void OnGUI() { krei = EditorGUILayout.IntField("Kreispunkte", krei); if (krei < 3) { krei = 3; } ring = EditorGUILayout.IntField("Ringanzahl", ring); if (ring < 2) { ring = 2; } if (GUILayout.Button("Add")) { branchs.Add(new GameObject()); branchs[branchs.Count-1].AddComponent<MeshRenderer>(); branchs[branchs.Count-1].AddComponent<MeshFilter>(); branchs[branchs.Count-1].AddComponent<Renderer>(); Renderer Rend = branchs[branchs.Count - 1].GetComponent<Renderer>(); Rend.material = new Material(Shader.Find("Specular")); Rend.material.color = Color.green; mes.Add(new Mesh()); mes[branchs.Count - 1] = branchs[branchs.Count-1].GetComponent<MeshFilter>().mesh; mes[branchs.Count - 1].Clear(); mes[branchs.Count - 1].vertices = MeshGen.Creatvertices(ring,krei); mes[branchs.Count - 1].triangles = MeshGen.Createtriangles(ring, krei); mes[branchs.Count - 1].RecalculateNormals(); } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.