- Home /
Confusion on how to create Tools
I managed to do what I was seeking, namely do a very simple tool, bound to a keyboard shortcut that allow me to align selected objects to the first not-selected collider/rigid body found by a ray cast from the SceneView, pointed by the mouse position.
However, I'm not very pleased with how I did it, namely I ended up doing a .dll with reference to System.Windows.Forms.
My issue is;
1) MenuItem must be tagged over a static method. Therefor, it cannot receive any Event that may contain the mouse position. Input is none functional in the editor. It is the only "official" way I know to make something show up in Unity's menus.
2) To use Event, I could use a OnGUI/OnSceneGUI or any other OnSomethingGUI to get the proper Event. However, I'm yet to find a way to do a "tool" without it living somewhere, on a GameObject, a Inspector or an EditorWindow. I found no way to do a tool that is created on a keyboard prompt, received the proper events, and is disposed right after.
3) External reference such as System.Windows.Forms doesn't work on script compiled directly within Unity. It pops the annoying "This assembly doesn't exist in System." Is there a way in Unity to get Mouse/Keyboard states without an Event?
Is there a cleaner way to do something like that? I haven't found any reference to tools that are not held in a container such as a GameObject or an EditorWindow. Am I missing something?
Your answer
![](https://koobas.hobune.stream/wayback/20220613113122im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to prevent GameObject from spawning on top of each other? 1 Answer
Get the length from the object i click on to the mouserelease.. how? 0 Answers
Rotation of Object on single axis in direction of the mouse position 0 Answers
camera.ScreenToWorldPoint() question 1 Answer
Can I fake the mouse/touch position relative to the real mouse/touch position? 0 Answers