Creates an empty prefab at given path.
If a prefab at the path already exists it will be deleted and replaced with an empty prefab. Returns a reference to the prefab.
// Creates a prefab from the selected GameObjects. // If the prefab already exists it asks if you want to replace it.
#pragma strict
@MenuItem("Examples/Create Prefab From Selected") static function CreatePrefab() {
var objs = Selection.gameObjects;
for (var go : GameObject in objs) { var localPath : String = "Assets/" + go.name + ".prefab"; if (AssetDatabase.LoadAssetAtPath(localPath, GameObject)) { 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) static function ValidateCreatePrefab() { return Selection.activeGameObject != null; }
static function CreateNew(obj : GameObject, localPath : String) { var prefab : Object = PrefabUtility.CreateEmptyPrefab(localPath); PrefabUtility.ReplacePrefab(obj, prefab, ReplacePrefabOptions.ConnectToPrefab); }
// Creates a prefab from the selected GameObjects. // If the prefab already exists it asks if you want to replace it. using UnityEngine; using UnityEditor;
public class CreatePrefabExample : EditorWindow {
[MenuItem ("Examples/October/CreatePrefabExample")] static void CreatePrefab() { GameObject[] objs = Selection.gameObjects; if (objs.Length == 0) { Debug.Log("No GameObjects selected."); return; } foreach (GameObject go in objs) { Debug.Log("foreach: " + go.name); string localPath = "Assets/October/" + go.name + ".prefab"; if (AssetDatabase.LoadAssetAtPath(localPath, typeof(GameObject))) { Debug.Log("no idea, but something"); if (EditorUtility.DisplayDialog("Are you sure?", "The prefab already exists. Do you want to overwrite it?", "Yes", "No")) { Debug.Log("DisplayDialog took yes"); CreateNew(go, localPath); } } else { Debug.Log(go.name + " is not a prefab, will convert"); CreateNew(go, localPath); } } } static void CreateNew(GameObject obj, string localPath) { Debug.Log("CreateNew: " + obj.name + " : " + localPath); Object prefab = PrefabUtility.CreateEmptyPrefab(localPath); PrefabUtility.ReplacePrefab(obj, prefab, ReplacePrefabOptions.ConnectToPrefab); }
}