FileStriker Geschrieben 26. Mai 2015 Melden Share Geschrieben 26. Mai 2015 Hallo Leute, Ich steh heute vor folgendem Problem: Ich bin dabei ein Custom Inspector zu schreiben, der mir hilft mein Level zu gestalten Das Problem ist nur, dass ich von den gesetzten Objekten zwar das Prefab bekommen, dies aber nur als Object und nicht als GameObjcet. Meine Frage: Wie kann ich das Prefab als GameObject bekommen, oder wie kann ich es zu einem GameObject ändern? Mein Code aus Wesentlichste beschränkt: using UnityEngine; using UnityEditor; using System.Collections; using System.Collections.Generic; using System.Linq; [CustomEditor(typeof(Spawner))] public class SpawnerEditor : Editor { public int i; public int i2; public override void OnInspectorGUI (){ Spawner myTarget = (Spawner)target; base.DrawDefaultInspector(); if(GUILayout.Button("Convert")){ i = 0; List<Object> tempPrefab; myTarget.enemy = new int[myTarget.enemyNumber.Length]; myTarget.time = new float[myTarget.enemyNumber.Length]; myTarget.position = new float[myTarget.enemyNumber.Length]; myTarget.health = new int[myTarget.enemyNumber.Length]; myTarget.extraEffect = new float[myTarget.enemyNumber.Length]; myTarget.enemyPrefab = new Object[0]; while(i < myTarget.enemyNumber.Length){ tempPrefab = myTarget.enemyPrefab.ToList(); i2 = 0; while(i2 < myTarget.enemyPrefab.Length){ if(myTarget.enemyPrefab[i2] == EditorUtility.GetPrefabParent(myTarget.enemyNumber[i])){ break; }else{ i2 ++; } Debug.Log("i2 " + i2); } /*----------------------------------------------------------------------------------------------------------------------- Hier liegt das Problem: ich kann leider nicht schreiben: (GameObject))EditorUtility.GetPrefabParent(myTarget.enemyNumber[i]); Weil ich dann immmer den Error bekomme, dass Unity Objct nicht zu GameObject ändern kann, jedoch benötige ich die GameObject Form, um z.B. Die Transform Componente zu ändern. -----------------------------------------------------------------------------------------------------------------------*/ if(i2 >= myTarget.enemyPrefab.Length){ tempPrefab.Add(EditorUtility.GetPrefabParent(myTarget.enemyNumber[i])); myTarget.enemy[i] = (int)myTarget.enemyPrefab.Length; }else{ myTarget.enemy[i] = i2; } myTarget.enemyPrefab = tempPrefab.ToArray(); if(myTarget.enemyNumber[i].GetComponent<Transmitter>()){ myTarget.health[i] = myTarget.enemyNumber[i].GetComponent<Transmitter>().health; myTarget.extraEffect[i] =myTarget.enemyNumber[i].GetComponent<Transmitter>().extraEffect; } myTarget.time[i] = myTarget.enemyNumber[i].transform.position.z / 5; myTarget.position[i] = myTarget.enemyNumber[i].transform.position.x; Debug.Log("i " + i); i ++; } } if(GUI.changed){ EditorUtility.SetDirty(myTarget); } } } ERROR Bild LG FileStriker Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
FileStriker Geschrieben 26. Mai 2015 Autor Melden Share Geschrieben 26. Mai 2015 Ok ich weiß zwar nicht wie, aber auf einmal kam mir die Idee, das Ergebnis zu Transform zu ändern also: tempPrefab.Add((Transform)EditorUtility.GetPrefabParent(myTarget.enemyNumber[i])); und es hat geklappt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.