Unity API Example in C# - PrefabUtility.CreateEmptyPrefab & PrefabUtility.ReplacePrefab. You will need to put this in Assets/Editor (make it if it doesn't already exist) as this is a Editor script.
CreatePrefabEditor.cs
Unity Get Prefab
PrefabUtility.SaveAsPrefabAsset was introduced in 2018.3.0a6 Resolution Note: The creation of the prefab out of the model in postprocessor requires a little bit more code: You need to instantiate your model first, then save as prefab asset and destroy the instance. Adds a prefab data cleaner window under Window/Prefab data cleaner. Place the scripts in a folder named Editor in your project's Assets folder.; Open the window by selecting Window/Prefab data cleaner.; What it does.
| usingUnityEngine; |
| usingUnityEditor; |
| publicclassCreatePrefabEditor |
| { |
| /* Example from Unity API Documentation for: |
| * PrefabUtility.CreateEmptyPrefab (Looks like a duplicate example) & |
| * PrefabUtiltiy.ReplacePrefab |
| * Converted from UnityScript to C# |
| * |
| * However, if you make a prefab from the project folder, there are a few errors |
| * generated from the CreateNew() function. |
| * |
| * Creates a prefab from the selected GameObjects. |
| * If the prefab already exists it asks if you want to replace it |
| * |
| */ |
| [MenuItem('Examples/Create Prefab From Selected')] |
| privatestaticvoidCreatePrefab() |
| { |
| GameObject[] objs=Selection.gameObjects; |
| /* For each gameobject in selected array, |
| * Creates an empty prefab then replaces it |
| */ |
| foreach(GameObjectgoinobjs) |
| { |
| stringlocalPath='Assets/'+go.name+'.prefab'; |
| if (AssetDatabase.LoadAssetAtPath<GameObject>(localPath)) |
| { |
| if (EditorUtility.DisplayDialog('Are you sure?', |
| 'The prefab already exists. Do you want to overwrite it?', |
| 'Yes', 'No')) |
| { |
| CreateNew(go, localPath); |
| } |
| } |
| else |
| { |
| CreateNew(go, localPath); |
| } |
| } |
| } |
| [MenuItem('Examples/Create Prefab From Selected', true)] |
| boolValidateCreatePrefab() |
| { |
| returnSelection.activeGameObject!=null; |
| } |
| // Create Empty Prefab and then Replace |
| staticvoidCreateNew(GameObjectobj, stringlocalPath) |
| { |
| Objectprefab=PrefabUtility.CreateEmptyPrefab(localPath); |
| PrefabUtility.ReplacePrefab(obj, prefab, ReplacePrefabOptions.ConnectToPrefab); |
| } |
| } |

Prefab Utility Buildings Fiberglass
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment
