duck

Unity - Replace GameObjects With Prefab

Jun 9th, 2020
1,266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.18 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5.  
  6. public class ReplaceWithPrefab : ScriptableWizard
  7. {
  8.  
  9.     public GameObject prefab;
  10.  
  11.     [MenuItem("GameObject/Replace Selected Objects With Prefab...")]
  12.     static void CreateWizard()
  13.     {
  14.         ScriptableWizard.DisplayWizard<ReplaceWithPrefab>("Replace Selected Objects With Prefab", "Replace");
  15.     }
  16.     void OnWizardCreate()
  17.     {
  18.         if (prefab != null)
  19.         {
  20.  
  21.             foreach (Object o in Selection.objects)
  22.             {
  23.                 if (o is GameObject)
  24.                 {
  25.                     Debug.Log("Transform: " + o.name);
  26.                     Transform t = (o as GameObject).transform;
  27.  
  28.                     Transform newObj = ((GameObject)PrefabUtility.InstantiatePrefab(prefab)).transform;
  29.                     newObj.position = t.position;
  30.                     newObj.rotation = t.rotation;
  31.                     newObj.parent = t.parent;
  32.  
  33.                     Undo.RegisterCreatedObjectUndo(newObj.gameObject, "Replace Selected Objects with Prefab");
  34.                     Undo.DestroyObjectImmediate(t.gameObject);
  35.  
  36.                 }
  37.                 else
  38.                 {
  39.                     Debug.Log("something else.. " + o.name + " " + o.GetType());
  40.                 }
  41.             }
  42.         }
  43.         else
  44.         {
  45.             Debug.LogWarning("Can't replace with prefab, because you haven't assigned a prefab to use.");
  46.         }
  47.  
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment