Jump to content
Unity Insider Forum

Prefab von einem Objekt bekommen als GameObjekt


Recommended Posts

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

post-4858-0-30792700-1432646382_thumb.png

 

LG FileStriker

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...