x


reconnect programmatically instantiated prefab

When doing this:

Code:

Object prefab = AssetDatabase.LoadAssetAtPath(newPrefabPath, typeof(GameObject)); 
GameObject clone = GameObject.Instantiate(prefab) as GameObject; 

I can't do:

Code:

EditorUtility.ReconnectToLastPrefab(clone); 

And I can't do:

Code:

EditorUtility.GetPrefabParent(clone); 

Problem is, I have lots of scene objects (gameobjects) that are not prefabbed. I can create prefabs and I can instantiate (off thess prefabs) new gameobjects in place. But then these are not connected to their prefab.

How can I Instantiate a Prefab and Reconnect the resulting Object to this Prefab?

Here is a bit more code to explain what happens (or isn't):

// create the prefab for this transform ...
                newPrefabPath = prefabPath + Path.DirectorySeparatorChar + _t.gameObject.name + ".prefab";
                newPrefab = EditorUtility.CreateEmptyPrefab(newPrefabPath);
                EditorUtility.ReplacePrefab(_t.gameObject, newPrefab);


                Object prefab = AssetDatabase.LoadAssetAtPath(newPrefabPath, typeof(GameObject));
                GameObject clone = GameObject.Instantiate(prefab) as GameObject;

                // now replace the actual object in the scene with this prefab
                clone.transform.localScale = _t.localScale;
                clone.transform.position = _t.position;
                clone.transform.rotation = _t.rotation;
                clone.transform.parent = _t.parent;
                clone.name = _t.gameObject.name;
                Debug.Log(EditorUtility.ReconnectToLastPrefab(clone));
                EditorUtility.GetPrefabParent(clone);
                GameObject.DestroyImmediate(_t.gameObject);

So what I basically do is creating an empty prefab, replacing the contents of the prefab with an existing gameobject, then load this newly created prefab and instantiate it in the current scene, then set transform values according to the original game object and finally destroy the original game object.

more ▼

asked Aug 06 '10 at 12:01 AM

Kai Wegner gravatar image

Kai Wegner
68 2 2 10

May need more detail, but why are you trying to 'reconnect' something that's inherently connected already, and has no parent? In you example, wouldn't clone be connected to your prefab, by virtue of it being instantiated from it?

Aug 06 '10 at 12:27 AM DaveA

Hi DaveA,

thanks for your comment. Of course I thought that the newly created game Object would be connected to the prefab. But it isn't!

I may say this is at "Editor time" as you call it ;-)

I added some more code and explaination on my problem

Aug 06 '10 at 07:20 AM Kai Wegner
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first
more ▼

answered Aug 06 '10 at 10:12 AM

AngryAnt gravatar image

AngryAnt ♦♦
4k 14 19 52

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x1730
x1288
x351
x175

asked: Aug 06 '10 at 12:01 AM

Seen: 2305 times

Last Updated: Aug 06 '10 at 07:18 AM