Jump to content
Unity Insider Forum

frkx316

Members
  • Content Count

    56
  • Joined

  • Last visited

Community Reputation

0 Neutral

About frkx316

  • Rank
    Advanced Member

Recent Profile Visitors

256 profile views
  1. frkx316

    Combine Mesh

    Nein das nicht ich schreibe zur zeit an einen Editor Script das je nach Input Meshes produziert damit der Benutzer seine eigenen Baum und Pflanzen Assets erstellen kann. Und ich denke das es praktischer ist ein Asset zu platzieren, dass nur 1-3 Meshes benutzt(also stamm Blattwerk und blüten oder Früchte) Schon allein das Blattwerk würde ohne das Kombinieren aus sehr vielen Blättern(Meshes) bestehen. Aber wie gesagt hab ich es mittlerweile herausgefunden ^^ Mfg
  2. frkx316

    Combine Mesh

    vielen Dank für die ausführliche Antwort aber leider komm ich um das Kombinieren nicht rum hab mich jetzt durch die api gekämpft und es funktioniert jetzt trotzdem versteh ich das zuweisen der Materialen zu den jeweiligen Submeshes noch nicht ganz
  3. frkx316

    Combine Mesh

    Guten Tag kann mir jemand erklären wie man via script verschiedene Meshes zu einem zu Kombinieren? Aus der Dokumentation von Unity werde ich leider nicht besonders schlau. In wie fern ist es Performancerelavant nur ein Mesh zu nutzen? Verringert sich dabei die Verticie Anzahl? Wenn ich in der Scene Meshes positioniere, werden diese beim Kombinieren genauso Positioniert (also mit der Rotation)? Wie funktionieren Submeshes und wie kann ich manuell oder via script den verschiedenen Meshes verschiedene Materiale zuweisen? ich weiß das sind viele Fragen aber ich freu mich schon sehr auf eure Antworten bleibt gesund
  4. 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(); } } }
  5. Edit: gibt es vielleicht eine Alternative zu Instantiate() ?
  6. 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 🙂
  7. frkx316

    function call

    Sowas sollte man lieber lassen, wenn man selbst keine Ahnung hat.😂
  8. frkx316

    function call

    Um eigene klassen global zu nutzen sind die befehle namespace irgendwas { ... } und using irgendwas; zu benutzen. Dabei handelt es sich um reine C# deklarierung. Mit dem folgendem Code erstellt man seine eigene Klassen so das man sie in jedem Script aufrufen kann using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Myclass { public class ScriptA : MonoBehaviour { // Property public int Numb { get; set; } // method internal int Multiply(int zahl) { return Numb * zahl; } //method internal void Method() { Debug.Log("es funktioniert"); } //Konstruktor public ScriptA() { Numb = 2; } } } wenn man dieses Script erstellt hat kann folgendes ausgeführt werden: using System.Collections; using System.Collections.Generic; using UnityEngine; using Myclass; public class ScriptB : MonoBehaviour { void Start() { ScriptA scr = new ScriptA(); Debug.Log(scr.Numb);// 2 scr.Numb = 5; Debug.Log(scr.Numb);//5 scr.Multiply(6); Debug.Log(scr.Multipl(6));//30 scr.Method();//"Es funktioniert" } }
  9. frkx316

    function call

    Nein ich verarsche euch nicht. Und wie kommst du darauf das ich Lehrer bin? 😂 Ich bin übrigens zufällig auf die passende Lösung gekommen Wenn man weis wonach man sucht findest man es relativ schnell raus Sobald ich wieder an meine Rechner bin, schicke ich euch mein Ergebnis
  10. frkx316

    function call

    Besser kann man es nicht beschreiben ich brauch eine allgemeine Lösung wie ich meine eigenen Klassen in verschiedenen Projekte integrieren kann
  11. frkx316

    function call

    Es soll eben nicht etwas im Inspektor des anderen auslösen (soweit ich das verstanden habe meinst du doch mit dem Inspektor das Fenster) ich möchte doch nur eine eigene Klasse Schreiben die ich in anderen scripten Aufrufen kann vielleicht dann irgendwie so das ich folgendes schreiben kann using myclass; und dann myclass.method();
  12. frkx316

    function call

    Im Spiel soll das alles auch nicht auftauchen das soll mir am Ende helfen meinen Workflow zu beschleunigen
  13. frkx316

    function call

    Da ich gerade länger nicht an meinen Rechner komme versuche ich das mal aus dem Gedächtnis so gut wie es geht zu rekonstruieren und da ich am Handy schreibe sieht es auch nicht so gut aus Void class myeditor : Editor{ Script ScriptA= wird irgendwie aufgerufen void OnGUI(){ if(Button){ ScriptA.method1(); } } } und das andere Script Public class ScriptA : Editor{ Public void method1(){ Mache irgendwas } Wie man sieht würde ich gerne bestimmte Funktionen zwischen Editorscripts Austauschen und ebenso variabeln
  14. frkx316

    function call

    Das wird nicht funktionieren, da man Editor scripte (wie schon gesagt) nicht an ein Gameobject legen kann
  15. frkx316

    function call

    Hallo, ich schreibe gerade an einem Editor (window) und würde gerne wissen wie ich methoden von anderen scripten aufrufen kann? Mein Programm wir mittlerweile relativ unübersichtlich und ich würde es gerne aufteilen. Die Geschichte mit GetComponent funktioniert ja leider nicht da man ein editorscript nicht an ein Gameobject legen kann...
×
×
  • Create New...