Unity 添加鼠标右键事件

 

把此类放到 Editor下使用就OK

 1 using UnityEngine;
 2 using System.Collections;
 3 using System.Collections.Generic;
 4 using UnityEditor;
 5 
 6 /// <summary>
 7 /// 添加鼠标右键事件
 8 /// </summary>
 9 [InitializeOnLoad]
10 [ExecuteInEditMode]
11 public static class AddMouseRight
12 {
13 
14     static AddMouseRight()
15     {
16         SceneView.onSceneGUIDelegate = OnSceneFunc;
17     }
18 
19     private class Item
20     {
21         public string MenuName { get; set; }
22         public GenericMenu.MenuFunction2 Call { get; set; }
23     }
24     static List<Item> S_MenuList = new List<Item>();
25     public static void AddMenu(string menuName, GenericMenu.MenuFunction2 call)
26     {
27         Item item = new Item();
28         item.MenuName = menuName;
29         item.Call = call;
30         S_MenuList.Add(item);
31     }
32 
33     static void OnSceneFunc(SceneView sceneView)
34     {
35         if (S_MenuList.Count == 0)
36         {
37             return;
38         }
39 
40         if (Event.current.isMouse && Event.current.button == 1)
41         {
42             Vector3 p = Event.current.mousePosition;
43 
44             GenericMenu menu = new GenericMenu();
45 
46             foreach(Item i in S_MenuList)
47             {
48                 menu.AddItem(new GUIContent(i.MenuName), false, i.Call, p);
49             }
50             menu.ShowAsContext();
51 
52             Event.current.Use();
53         }
54     }
55 
56     public static void Reset()
57     {
58         while(S_MenuList.Count > 0)
59         {
60             S_MenuList.RemoveAt(0);
61         }
62     }
63 
64 
65 }

 

posted on 2014-09-16 09:30  游戏开发:主席  阅读(8344)  评论(0编辑  收藏  举报

导航