最近在跟師兄做尋路編輯插件,發(fā)現(xiàn)SceneView這個是一個很不錯的東西远荠,但是官方文檔里居然沒有這個類的說明,難道是搜索姿勢不正確失息,還是說有新的東西把這個代替了譬淳。
是什么?
就是視圖scene窗口的編輯類盹兢。它是繼承于SearchableEditorWindow, IHasCustomMenu這兩個東西的邻梆。
小用法
也沒有把這個研究透徹,就說說我用到這個里面的幾個小接口吧绎秒。
切換2d視角
我們都知道scene里面有一個按鍵是2d浦妄,點擊它就可以轉換到2d視角。
也可以通過Scene Gizmo點擊或者右鍵選擇來控制場景攝像機的角度與投射。
這個是把你的scene角度調為2d視角:
sceneView = SceneView.lastActiveSceneView;
sceneView.in2DMode = true;
SceneView.lastActiveSceneView按我的理解應該就是上一次渲染出來的scene場景剂娄。
當然咱們如果已經是2d視角蠢涝,再點一次就回到我們之前的視角,這個的實現(xiàn):
private bool lastProjection;
private Quaternion lastQuaternion;
private void Change2dView(bool state)
{
var sceneView = SceneView.lastActiveSceneView;
if (state)
{
lastProjection = sceneView.orthographic;
lastQuaternion = sceneView.rotation;
}
else
{
sceneView.LookAt(sceneView.pivot, lastQuaternion, sceneView.size, lastProjection);
}
sceneView.in2DMode = state;
}
當然系統(tǒng)的切換到2d的按鈕阅懦,還設置了自動切換工具和二。
Tools.current = Tool.None;
Tools.viewTool = ViewTool.None;
這樣即可。
切換自定義視角
官方接口就只給出了轉向2d的角度故黑,但是我們看右鍵點擊卻有這么多儿咱,然后輾轉查詢庭砍,下面這些切換都是在SceneViewRotation這個類中編寫的场晶。具體的就不廢話了。
細心的讀者肯定都知道這個怎么做了怠缸,就是使用這一句代碼就好了:
sceneView.LookAt(sceneView.pivot, lastQuaternion, sceneView.size, lastProjection);
只用需要更改rotation與peojection即可诗轻。
OnSceneGUI事件
這個有點像OnGUI的一個事件方法,傳入的就是一個場景視圖揭北。
SceneView.onSceneGUIDelegate += OnSecneGUI;
方法中可以
private void OnSecneGUI(SceneView sceneView){
var current = Event.current;
switch (current.type)
{
case EventType.KeyUp:
//鍵盤按鍵檢測
break;
case EventType.MouseUp:
//鼠標彈起扳炬,這里是鼠標所有的點擊,如果要在區(qū)別如下
if (current.button == 0)
{
DrawPoint();
}
break;
case EventType.MouseDown:
//鼠標按下
break;
case EventType.MouseDrag:
//鼠標拖
break;
case EventType.Repaint:
//重繪
break;
case EventType.Layout:
//布局
break;
}
}
詳細的事件類型可以看這里
禁止鼠標點擊
只需要在EventType.Layout這個選項中添加:
HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive));
當然就是忽略點擊搔体。
嗯恨樟,暫時就這么多吧。謝謝了疚俱。