|
1. 代码控制Hierarchy上的小手工具(pick control)
SceneVisibilityManager.instence.EnablePicking(Gameobject, bool [with children])
SceneVisibilityManager.instence.DisablePicking(Gameobject, bool [with children])
如果使用小眼睛工具, 就换成Hide/Show
2. unity不运行时检测按键事件
https://bobsong.cn/945.html
Event e = Event.current;
if (e.isKey)
if(e.keyCode == KeyCode.Space)
3. 判断alt,ctrl等功能键是否已按下
Event e = Event.current;
e.alt = true;
e.control;
4. Scene的更新
SceneView.duringSceneGui += Function(SceneView arg)
5. Scene窗口绘制GUI控件
https://www.cnblogs.com/llllllvty/p/9905899.html
SceneView.duringSceneGui
2018的为onSceneGUIDelegate
SceneView.onSceneGUIDelegate = delegate (SceneView sceneView)
{
Handles.BeginGUI();
GUI.Label(new Rect(0f, 0f, 50f, 15f), "标题");
GUI.Button(new Rect(0f, 20f, 50f, 50f),
AssetDatabase.LoadAssetAtPath<Texture>(&#34;Assets/unity.png&#34;));
Handles.EndGUI();
};
6. Gameobject坐标转Scene窗口屏幕坐标
使用射线检测,原理和Game中点击物体一样,但是射线转换用的工具类不一样
HandleUtility.GUIPointToWorldRay(MousePos);
7. 重绘Scene窗口
SceneView.currentDrawingSceneView.Repaint();
8. Scene窗口发射射线
https://blog.csdn.net/qq_21397217/article/details/108683462
Ray ray = HandleUtility.GUIPointToWorldRay(currentEvent.mousePosition);
9. 禁止scene窗口拖动时框选
我们在扩展Unity的编辑器的时候经常会需要实现笔刷这样的一个功能,比如我们需要用鼠标点击或者拖拽就会生成一些游戏物体。
但是Unity默认在Scene窗口下鼠标左键点击、拖拽是选择游戏物体的功能,这会影响我们的笔刷功能。 我们可以通过在OnSceneGUI周期函数下面加这句代码来屏蔽关掉Unity默认的鼠标选择功能:
void OnSceneGUI(){
HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive));
}
作者:m969
链接:https://www.jianshu.com/p/48ad02d57095
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |
|