日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3D实现鼠标选中“高亮”显示功能

發布時間:2023/12/29 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D实现鼠标选中“高亮”显示功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、簡介


  • 基于Highlighting System插件的鼠標選中物體時,使物體高亮顯示。在這個插件的基礎上,改動小部分功能,使物體可以高亮顯示。
  • 在網上有很多這鼠標高亮顯示的相關資料,要么不符合自己的要求,要么符合的效果不滿意。所以基于這個插件,雖然也有些功能不符合本人的需求,不過可以進行少許改動,下次做項目時,在使用到鼠標選中功能時,直接引用這個腳本和插件就OK了。
  • 該文章僅供學習,記錄。不喜勿噴!
    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,用于存儲選中的物體

    public GameObject gameCheck;

    ****2.2在Update()里執行的代碼
    主要實現思路是當按下鼠標左鍵時,發射一條射線,當射線照射到物體時,獲取到該物體的對象。然后執行SetObjectHighlight(GameObject obj);該方法下面會講。

    void Update () {if(Input.GetMouseButtonDown(0)) {var ray = Camera.main.ScreenPointToRay(Input.mousePosition);//鼠標的屏幕坐標轉化為一條射線RaycastHit hit;//距離為5//if(Physics.Raycast(ray, out hit, 5)) {// var hitObj = hit.collider.gameObject;// Debug.Log(hitObj);//}//無距離限制if(Physics.Raycast(ray, out hit)) {var hitObj = hit.collider.gameObject;SetObjectHighlight(hitObj);Debug.Log(hitObj);}}}

    ****2.3 設置物體高亮
    這個方法很好理解,如果gameCheck這個變量為空,表示沒有物體被選中,直接使該物體處于高亮狀態;如果gameCheck這個變量與選中的這個變量是一樣的,則使選中的這個物體取消高亮顯示狀態;gameCheck這個變量與選中的物體不一樣的話,把gameCheck這個物體取消高亮顯示,把選中的物體設置為高亮。(如果是多選的話,后面會給出思路介紹)

    /// <summary>/// 設置物體高亮/// </summary>/// <param name="obj"></param>public void SetObjectHighlight(GameObject obj){if(gameCheck == null) {AddComponent(obj);}else if(gameCheck == obj) {RemoveComponent(obj);}else {RemoveComponent(gameCheck);AddComponent(obj);}}

    ****2.4 取消高亮顯示/添加高亮顯示
    **(1)添加高亮顯示
    使物體高亮根據這個插件的Demo,只需要為該物體添加SpectrumController.cs類即可使物體高亮(也可添加其他類,具體可看該插件的demo),但是顯示高亮之后還不行,因為根據該腳本的代碼,他還有閃爍、顏色改變等功能,不過對于我們來說,并沒有必要。

    /// <summary>/// 添加高亮組件/// </summary>/// <param name="obj"></param>public void AddComponent(GameObject obj){if(obj.GetComponent<SpectrumController>() == null) {obj.AddComponent<SpectrumController>();}gameCheck = obj;}

    改動下SpectrumController.cs類中的部分參數,將閃爍(speed)速度設為0,顏色(col)根據自己要求進行自定義改動.

    (2)取消高亮顯示
    取消高亮顯示也很簡單,只需要將SpectrumController.cs腳本和HighlightableObject.cs腳本移出掉即可。HighlightableObject.cs腳本是執行SpectrumController.cs腳本時會添加HighlightableObject.cs腳本。該腳本具體功能就是使物體高亮。
    //Destroy(obj.GetComponent());功能是移出物體的某個組件

    /// <summary>/// 移出組件/// </summary>/// <param name="obj"></param>public void RemoveComponent(GameObject obj){if(obj.GetComponent<SpectrumController>() != null) {Destroy(obj.GetComponent<SpectrumController>());}if(obj.GetComponent<HighlightableObject>() != null) {Destroy(obj.GetComponent<HighlightableObject>());}gameCheck = null;}

    demo下載鏈接

    四、擴展思路


    1、實現多選
    **如果要實現多選功能的話,就不能只定義gameCheck變量了,需要定義一個泛型變量List或者數組,當選中物體時,判斷該泛型是否存在此選中的物體對象,如果不存在則執行高亮功能,并且加入到該泛型中。一般多選都是按住Ctrl鍵+鼠標左鍵,所以你需要設置一個參數,該參數可能對demo并沒有什么影響,但是在真正的項目中就可能會產生影響。
    在Edit->Project Settings->Input下

    將下面選中的這個刪除掉,或者不刪除但是自己要清楚有這么個東西。這個Positive Button的值為left ctrl表示的是按左Ctrl也可實現鼠標左鍵功能。

    2、使用其他選中特效

    總結

    以上是生活随笔為你收集整理的Unity3D实现鼠标选中“高亮”显示功能的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产chinasex对白videos麻豆 | 91丨九色丨蝌蚪丨对白 | 国产一区二区三区精品愉拍 | 日日射天天操 | 一区二区日本视频 | 91蝌蚪少妇| 成人国产精品免费观看 | 亚洲三级影视 | 葵司免费一区二区三区四区五区 | 星空大象mv高清在线观看免费 | 欧美性啪啪 | 四虎成人影视 | 日韩精品一区三区 | cao我| 国内外免费激情视频 | 国产人妖ts重口系列网站观看 | 日本精品久久久久中文字幕 | 日女人免费视频 | 中国老熟妇自拍hd发布 | 成人18在线 | 成人第一页 | 波多野结衣免费看 | av导航福利 | 国产人成精品 | 久久久老司机 | 总裁边开会边做小娇妻h | 亚洲 成人 av | 亚洲天堂精品在线观看 | 5d肉蒲团之性战奶水 | 亚洲第一色在线 | 九九色九九| 国产人人插 | 国产91综合 | 最新日韩视频 | 99精品视频免费版的特色功能 | 中文字幕一区二区三区精彩视频 | 秋霞久久精品 | 一个色av| av动漫免费看 | 小向美奈子在线观看 | 欧美成人专区 | 天堂网中文字幕 | 亚洲欧美国产精品 | 99久久人妻精品免费二区 | 久久人人爽人人爽人人片亚洲 | 欧美日韩国产高清 | 黄色在线播放网站 | 美女黄页在线观看 | 蜜桃中文字幕 | av大片网址 | 精品无码人妻一区 | www.999热| 国产三级自拍 | av中文字幕网 | 五月婷婷丁香激情 | 啪啪网免费 | 91天堂在线观看 | 亚洲AV无码精品国产 | 午夜国产精品视频 | 国产精品久久毛片 | 三级a做爰全过程 | www.久久av| 日韩免费一区二区三区 | 91久久久久久久久久久久久 | 国产三区四区视频 | 日韩欧美在线观看一区 | 中文在线播放 | 免费观看亚洲视频 | 久久精品视频在线 | 日韩一级影院 | 天天宗合| 午夜精品福利在线观看 | 爱搞逼综合| 久草视频播放 | 在线观看av网 | 国产制服在线 | 国产99自拍| 美女超碰在线 | 国产精品亚洲精品 | 亚洲大尺度网站 | 午夜影院网站 | 欧美黄色一区 | 国产富婆一区二区三区 | 激情丁香六月 | 三级av在线 | 超碰97人 | 国产黄色在线 | 欧美 亚洲 另类 激情 另类 | 色网在线| 毛片无码免费无码播放 | 欧美午夜视频在线观看 | 亚洲高清欧美 | 女同一区二区三区 | 第色 | 日本中文一区 | 国产精品30p | 三级黄色片免费观看 | 日韩精品无码一区二区 | 色老大视频 |