暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

ShortcutUtility.cs 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using UnityEngine.UIElements;
  2. using UnityEditor.ShortcutManagement;
  3. namespace UnityEditor.U2D.Animation
  4. {
  5. internal static class ShortcutIds
  6. {
  7. public const string toggleToolText = "2D/Animation/Toggle Tool Text";
  8. public const string restoreBindPose = "2D/Animation/Restore Bind Pose";
  9. public const string toggleCharacterMode = "2D/Animation/Toggle Character Mode";
  10. public const string previewPose = "2D/Animation/Preview Pose";
  11. public const string editBone = "2D/Animation/Edit Bone";
  12. public const string createBone = "2D/Animation/Create Bone";
  13. public const string splitBone = "2D/Animation/Split Bone";
  14. public const string autoGeometry = "2D/Animation/Auto Geometry";
  15. public const string editGeometry = "2D/Animation/Edit Geometry";
  16. public const string createVertex = "2D/Animation/Create Vertex";
  17. public const string createEdge = "2D/Animation/Create Edge";
  18. public const string splitEdge = "2D/Animation/Split Edge";
  19. public const string autoWeights = "2D/Animation/Auto Weights";
  20. public const string weightSlider = "2D/Animation/Weight Slider";
  21. public const string weightBrush = "2D/Animation/Weight Brush";
  22. public const string boneInfluence = "2D/Animation/Bone Influence";
  23. public const string spriteInfluence = "2D/Animation/Sprite Influence";
  24. public const string pastePanelWeights = "2D/Animation/Paste Panel Weights";
  25. public const string visibilityPanel = "2D/Animation/Visibility Panel";
  26. public const string characterPivot = "2D/Animation/Character Pivot";
  27. }
  28. internal class ShortcutUtility
  29. {
  30. public System.Action OnShortcutChanged;
  31. private string[] m_ShortcutIds;
  32. public ShortcutUtility(params string[] shortcutIds)
  33. {
  34. m_ShortcutIds = shortcutIds;
  35. ShortcutManager.instance.shortcutBindingChanged += OnBindingChanged;
  36. ShortcutManager.instance.activeProfileChanged += OnProfileChanged;
  37. }
  38. ~ShortcutUtility()
  39. {
  40. ShortcutManager.instance.shortcutBindingChanged -= OnBindingChanged;
  41. ShortcutManager.instance.activeProfileChanged -= OnProfileChanged;
  42. }
  43. private void OnBindingChanged(ShortcutBindingChangedEventArgs args)
  44. {
  45. foreach (var id in m_ShortcutIds)
  46. {
  47. if (args.shortcutId == id)
  48. {
  49. OnShortcutChanged?.Invoke();
  50. break;
  51. }
  52. }
  53. }
  54. private void OnProfileChanged(ActiveProfileChangedEventArgs args)
  55. {
  56. OnShortcutChanged?.Invoke();
  57. }
  58. public void AddShortcutToButtonTooltip(VisualElement rootElement, string buttonName, string shortcutBindingId)
  59. {
  60. var button = rootElement.Q<Button>(buttonName);
  61. var binding = ShortcutManager.instance.GetShortcutBinding(shortcutBindingId);
  62. var bindingString = binding.ToString();
  63. if(!string.IsNullOrEmpty(bindingString))
  64. button.tooltip += $" ({bindingString})";
  65. }
  66. }
  67. }