2021년 4학년 1학기 기업연계프로젝트2 컴퓨터소프트웨어공학과 <원광투어팀> 팀장 : 송유진 팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.1 KiB

5 years ago
  1. using System.Collections.Generic;
  2. using Unity.FPS.Game;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Unity.FPS.EditorExt
  6. {
  7. [CustomEditor(typeof(PrefabReplacer))]
  8. public class PrefabReplacerEditor : Editor
  9. {
  10. public override void OnInspectorGUI()
  11. {
  12. DrawDefaultInspector();
  13. if (GUILayout.Button("Replace"))
  14. {
  15. Replace((target as PrefabReplacer));
  16. }
  17. }
  18. public void Replace(PrefabReplacer replacer)
  19. {
  20. List<GameObject> allPrefabObjectsInScene = new List<GameObject>();
  21. foreach (Transform t in GameObject.FindObjectsOfType<Transform>())
  22. {
  23. if (PrefabUtility.IsAnyPrefabInstanceRoot(t.gameObject))
  24. {
  25. allPrefabObjectsInScene.Add(t.gameObject);
  26. }
  27. }
  28. foreach (GameObject go in allPrefabObjectsInScene)
  29. {
  30. GameObject instanceSource = PrefabUtility.GetCorrespondingObjectFromSource(go);
  31. foreach (var replacement in replacer.Replacements)
  32. {
  33. GameObject source = replacer.SwitchOrder ? replacement.TargetPrefab : replacement.SourcePrefab;
  34. GameObject target = replacer.SwitchOrder ? replacement.SourcePrefab : replacement.TargetPrefab;
  35. if (instanceSource == source)
  36. {
  37. // Create the instance
  38. GameObject instance = PrefabUtility.InstantiatePrefab(target) as GameObject;
  39. instance.transform.SetParent(go.transform.parent);
  40. instance.transform.position = go.transform.position;
  41. instance.transform.rotation = go.transform.rotation;
  42. instance.transform.localScale = go.transform.localScale;
  43. Undo.RegisterCreatedObjectUndo(instance, "prefab replace");
  44. Undo.DestroyObjectImmediate(go);
  45. }
  46. }
  47. }
  48. }
  49. }
  50. }