我們?cè)跀U(kuò)展Unity的編輯器的時(shí)候經(jīng)常會(huì)需要實(shí)現(xiàn)筆刷這樣的一個(gè)功能,比如我們需要用鼠標(biāo)點(diǎn)擊或者拖拽就會(huì)生成一些游戲物體俗或。
但是Unity默認(rèn)在Scene窗口下鼠標(biāo)左鍵點(diǎn)擊、拖拽是選擇游戲物體的功能,這會(huì)影響我們的筆刷功能枪萄。
我們可以通過在OnSceneGUI周期函數(shù)下面加這句代碼來屏蔽關(guān)掉Unity默認(rèn)的鼠標(biāo)選擇功能:
void OnSceneGUI(){
HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive));
}
還有一點(diǎn)我們?cè)趯?shí)現(xiàn)筆刷功能需要注意的就是鼠標(biāo)射線檢測(cè)的功能,我們?cè)讷@取Scene窗口下的鼠標(biāo)位置的時(shí)候需要對(duì)y軸進(jìn)行一次反轉(zhuǎn)猫妙,這樣再進(jìn)行屏幕射線檢測(cè)才能獲得正確的結(jié)果:
private Vector2 GetMousePos()
{
var mousePos = Event.current.mousePosition;
mousePos.y = Camera.current.pixelHeight - mousePos.y;
return mousePos;
}
Camera.current.ScreenPointToRay(GetMousePos());