Няма описание
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.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using UnityEditor.SceneManagement;
  3. using UnityEngine;
  4. using UnityEngine.Rendering.Universal;
  5. namespace UnityEditor.Rendering.Universal
  6. {
  7. static class GameObjectCreation
  8. {
  9. const int k_PixelPerfectCameraGameObjectMenuPriority = 5;
  10. [MenuItem("GameObject/2D Object/Pixel Perfect Camera (URP)", priority = k_PixelPerfectCameraGameObjectMenuPriority)]
  11. static void GameObjectCreatePixelPerfectCamera(MenuCommand menuCommand)
  12. {
  13. var go = CreateGameObject("Pixel Perfect Camera", menuCommand, new[] { typeof(PixelPerfectCamera) });
  14. go.GetComponent<PixelPerfectCamera>().gridSnapping = PixelPerfectCamera.GridSnapping.PixelSnapping;
  15. go.GetComponent<Camera>().orthographic = true;
  16. }
  17. static public GameObject CreateGameObject(string name, MenuCommand menuCommand, params Type[] components)
  18. {
  19. var parent = menuCommand.context as GameObject;
  20. var newGO = ObjectFactory.CreateGameObject(name, components);
  21. newGO.name = name;
  22. Selection.activeObject = newGO;
  23. Place(newGO, parent);
  24. if (EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D)
  25. {
  26. var position = newGO.transform.position;
  27. position.z = 0;
  28. newGO.transform.position = position;
  29. }
  30. Undo.RegisterCreatedObjectUndo(newGO, string.Format("Create {0}", name));
  31. return newGO;
  32. }
  33. internal static void Place(GameObject go, GameObject parentTransform)
  34. {
  35. if (parentTransform != null)
  36. {
  37. var transform = go.transform;
  38. Undo.SetTransformParent(transform, parentTransform.transform, "Reparenting");
  39. transform.localPosition = Vector3.zero;
  40. transform.localRotation = Quaternion.identity;
  41. transform.localScale = Vector3.one;
  42. go.layer = parentTransform.gameObject.layer;
  43. if (parentTransform.GetComponent<RectTransform>())
  44. ObjectFactory.AddComponent<RectTransform>(go);
  45. }
  46. else
  47. {
  48. PlaceGameObjectInFrontOfSceneView(go);
  49. StageUtility.PlaceGameObjectInCurrentStage(go); // may change parent
  50. }
  51. // Only at this point do we know the actual parent of the object and can modify its name accordingly.
  52. GameObjectUtility.EnsureUniqueNameForSibling(go);
  53. Undo.SetCurrentGroupName("Create " + go.name);
  54. Selection.activeGameObject = go;
  55. }
  56. internal static void PlaceGameObjectInFrontOfSceneView(GameObject go)
  57. {
  58. var view = SceneView.lastActiveSceneView;
  59. if (view != null)
  60. {
  61. view.MoveToView(go.transform);
  62. }
  63. }
  64. }
  65. }