- Home /
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.
$$anonymous$$ay 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?
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
Answer by AngryAnt · Aug 06, 2010 at 10:12 AM
Use
EditorUtility.InstantiatePrefab
.
The method has been moved into a seperate class and can now be found here: PrefabUtility.InstantiatePrefab
Your answer
Follow this Question
Related Questions
Viewpport for Custom Editor 1 Answer
Weird bug when dragging object onto EditorGUILayout.ObjectField 0 Answers
Custom scene view in editor window 2 Answers
Any way to attach a bit of code to individual UI Windows [Editor] 1 Answer
Create a custom editor window with repeating subsection (mockup included) 0 Answers