- Home /
ReplacePrefab() resets transforms for instanced prefabs?
Hi, I have a problem with instanced objects getting their transforms reseted back to their initial Prefab transform values. All this happens when I re-import a model that is processed through a editor script in OnPostprocessModel(). In this script I apply BoxColliders, scripts and so on. Everything works great except for the transform-problem. Here's the code snippet I think is causing the problem.
//Instantiate the loaded model in the scene temporarily to make changes to var go:GameObject = GameObject.Instantiate(model, Vector3.zero, Quaternion.identity) as GameObject;
//Search for prefab at path
var prefabName:String = "Assets/Prefabs/LevelComponents/GroundComponents/" + model.name + ".prefab";
var prefab:Object = AssetDatabase.LoadAssetAtPath(prefabName, Object) as Object;
if(prefab == null)
{
Debug.Log("Couldn't find any prefab with the name: " + model.name);
Debug.Log("Creating prefab: " + model.name);
prefab = EditorUtility.CreateEmptyPrefab(prefabName);
}
else
{
Debug.Log("Found prefab to update. Updating: " + model.name);
}
//Replace prefab with the modified GameObject
EditorUtility.ReplacePrefab(go, prefab);
//Remove the GameObject from scene
Editor.DestroyImmediate(go, true);
So my question is if there's a way to update a prefab with "reimport" and process the model without reseting the transforms for the instanced objects in scenes? Thanks, /Rikard
We are seeing this same problem. Worse... the object then has some sort of psychic connection to the prefab. Changing the prefab's transform immediately modifies the instances in the scene. That just ain't right.
I'm having the same problem, it seems there's no way to do this. I was trying to make vertices to go back...
Answer by TMPxyz · Dec 18, 2012 at 05:56 AM
Hi, try this: PrefabUtility.ReplacePrefab(go, thePrefab, ReplacePrefabOptions.ReplaceNameBased);
No one has voted on this (and I don't have rep yet to do so) but I just tried ReplacePrefabOptions.ReplaceNameBased and it worked. The existing prefabs did not move. Great job.
Can confirm that this works for this intended behaviour.
Who'd have thought all these years later and still this comment is proving mega useful... Thanks very much.
Your answer
Follow this Question
Related Questions
Problem with GetComponentinChildren and Instantiate 0 Answers
How to follow multiple clones positions of an instantiate prefab having a velocity ? 1 Answer
Howto set main.camera as a parent when main.camera itself is a child of a prefab 1 Answer
How do I instantiate a Prefab using a MenuItem? 1 Answer
How to make sprites instantiate based on randomly generated integer? 1 Answer