Unity3D实现鼠标选中“高亮”显示功能
一、簡介
demo效果圖:
實際項目效果圖1:
實際項目效果圖2:
二、準備工作
1、導入Highlighting System插件,或者不導入直接下載本人做好的demo也可以。
2、在攝像機中添加Highlighting Effect腳本,該腳本必須添加否則Game視口如何顯示物體的高亮,具體如下:
MouseHighlight腳本是本人自己寫的,功能就是選中物體高亮,不選中就取消高亮。
3、在場景中隨便拖入幾個物體,如Cube等,必須有碰撞器的物體,為什么要加碰撞器那就是射線的相關知識了。
4、上述工作做完后,就開始看看主要腳本MouseHighlight.cs了。
三、實現鼠標選中高亮
1、在這個插件用有很多顯示高亮的特效,如:SpectrumController.cs、FlashingController.cs等,不過無需使用這么多,只采用一種即可,我采用的是“SpectrumController.cs”這個類來作為高亮顯示的特效。其他特效以及其他功能如圖:
2、創建MouseHighlight.cs類或者隨意創建一個類
****2.1 定義一個變量gameCheck,用于存儲選中的物體
****2.2在Update()里執行的代碼
主要實現思路是當按下鼠標左鍵時,發射一條射線,當射線照射到物體時,獲取到該物體的對象。然后執行SetObjectHighlight(GameObject obj);該方法下面會講。
****2.3 設置物體高亮
這個方法很好理解,如果gameCheck這個變量為空,表示沒有物體被選中,直接使該物體處于高亮狀態;如果gameCheck這個變量與選中的這個變量是一樣的,則使選中的這個物體取消高亮顯示狀態;gameCheck這個變量與選中的物體不一樣的話,把gameCheck這個物體取消高亮顯示,把選中的物體設置為高亮。(如果是多選的話,后面會給出思路介紹)
****2.4 取消高亮顯示/添加高亮顯示
**(1)添加高亮顯示
使物體高亮根據這個插件的Demo,只需要為該物體添加SpectrumController.cs類即可使物體高亮(也可添加其他類,具體可看該插件的demo),但是顯示高亮之后還不行,因為根據該腳本的代碼,他還有閃爍、顏色改變等功能,不過對于我們來說,并沒有必要。
改動下SpectrumController.cs類中的部分參數,將閃爍(speed)速度設為0,顏色(col)根據自己要求進行自定義改動.
(2)取消高亮顯示
取消高亮顯示也很簡單,只需要將SpectrumController.cs腳本和HighlightableObject.cs腳本移出掉即可。HighlightableObject.cs腳本是執行SpectrumController.cs腳本時會添加HighlightableObject.cs腳本。該腳本具體功能就是使物體高亮。
//Destroy(obj.GetComponent());功能是移出物體的某個組件
demo下載鏈接
四、擴展思路
1、實現多選
**如果要實現多選功能的話,就不能只定義gameCheck變量了,需要定義一個泛型變量List或者數組,當選中物體時,判斷該泛型是否存在此選中的物體對象,如果不存在則執行高亮功能,并且加入到該泛型中。一般多選都是按住Ctrl鍵+鼠標左鍵,所以你需要設置一個參數,該參數可能對demo并沒有什么影響,但是在真正的項目中就可能會產生影響。
在Edit->Project Settings->Input下
將下面選中的這個刪除掉,或者不刪除但是自己要清楚有這么個東西。這個Positive Button的值為left ctrl表示的是按左Ctrl也可實現鼠標左鍵功能。
2、使用其他選中特效
總結
以上是生活随笔為你收集整理的Unity3D实现鼠标选中“高亮”显示功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [附源码]java毕业设计基于健身房管理
- 下一篇: ETO的公开赛T3《寻星》 题解(BY