原创 【Unity】3D場景角色血條/狀態條

實現方式有很多,看哪種更適合你的項目: 1. UGUI實現 UI可以方便的實現血條等功能,只需要將角色的世界座標轉換爲屏幕座標,讓狀態條跟隨角色即可 問題在於,UI始終在屏幕最上層,如果有3D物體遮擋住角色,使角色不可見,UI狀態條仍然可

原创 【Unity】簡易UI框架(帶通知彈窗)

主要包含:統一控制Panel全屏界面面板及Popup彈窗的顯示隱藏,通知消息彈窗,按鈕自動添加點擊音效 UIManager:統一管理類,統一控制各個界面的顯示及隱藏 界面隱藏時,是將界面SetActive(false)了(沒有寫刷新函數

原创 【Unity】刮刮樂效果(擦除圖片像素值)

實現類似刮刮樂效果,擦除圖片指定像素值(修改圖片Alfa通道)  參考Unity 刮刮樂工程源碼的實現原理,對實現方式有一些調整 這裏RawImage需要保持原圖大小,不能縮放,不然座標計算會有偏差 using System; usi

原创 【Unity】用Text+Image實現神奇的文字下劃線

寫需求的時候搜了一些文字加下劃線的方法,UGUI的Text,大都需要寫一堆代碼來封裝Text,比較麻煩 考慮過用TextMeshPro,不過TextMeshPro不能公用Text的字體,有點坑 利用Text加Image試了一下,實現效果

原创 【Unity】關於ScreenCapture.CaptureScreenshot截屏的嘗試

利用Unity提供函數"ScreenCapture"可以屏幕截取,不過只能截全屏,不區分層級,屏幕內顯示的會全部截取下來,與手機截屏功能比較類似,實用性不大 ··· 下面是一組簡單測試的數據: //屏幕尺寸: 720*1

原创 阿基米德螺旋線

阿基米德螺旋線公式:      //極座標方程爲: r = a + bθ     //平面笛卡爾座標方程式爲: x = (a + bθ)cos(θ), y = (a + bθ)sin(θ)     //a: 當θ=0°時的極徑(mm)

原创 【C#】Hashtable哈希表及其與Dictionary字典的區別

Hashtable哈希表: 看起來與Dictionary何止是相似啊 Hashtable與Dictionary,都是key/value鍵值對的形式,區別在於Hashtable的鍵值是object(DictionaryEntry),值類型

原创 【C#】敏感詞過濾校驗

敏感詞過濾的方法有很多,如何能更快速更大範圍的匹配敏感詞? 敏感詞庫小的情況,用正則、字符串匹配即可實現,還可以按照首字母對敏感詞分組以提高效率。 當詞庫比較大時,就需要考慮效率問題了··· 找了很多實現方法,感覺不是很適合現在的需求,

原创 觀察者模式及使用委託簡化觀察者

先說明一下觀察者模式:觀察者模式|菜鳥教程 我用最簡單的方式將原理實現了一下: //被觀察者父類,主要有Attach、Detach、Notify函數 //被觀察者父類 public class Subject : MonoB

原创 【C#】被問到的二叉樹,原來長這樣

二叉樹,一個枝長着兩個叉的樹,hhh 二叉樹是每個節點最多有兩個子節點的樹狀鏈式結構,看起來,是更復雜維度的鏈表: 實現方式能搜到好多,鑑於沒有實際用過,直接上鍊接: 二叉樹的簡單介紹以及二叉樹的存儲結構 C#實現二叉樹--二叉鏈表結構

原创 【C#】字典Dictionary添加元素,除了使用Add還可以這樣?

  // 01, 初始化的時候進行賦值 Dictionary<int, string> dic = new Dictionary<int, string>() { { 1, "str111" } };

原创 通用的FSM有限狀態機(狀態管理,可實現NPC簡單AI)

在角色狀態較多,狀態之間切換關係複雜時,簡單的使用if...else...和switch...case...已經滿足不了需求了,不僅代碼結構很亂,難以擴展,別人看起來也會很費勁,這時候就需要FSM有限狀態機,清晰方便的實現多狀態管理 參考

原创 【Unity】解析Excel數據,並自動創建對應的C#類

參考:Unity C#配置表工具   解析流程: 1. 配置Excel 2. 讀取解析Excel (引用Excel.dll, ICSharpCode.SharpZipLib.dll) 3. 重新整理解析到的數據 4. 創建Excel對應的

原创 【C#】自定義單向鏈表、雙向鏈表及圖解原理

參考:數組、單鏈表和雙鏈表介紹 以及 雙向鏈表的C/C++/Java實現  單向鏈表: 由節點鏈接組成,在內存中不連續,每個節點包含節點自身的數據和下一節點的引用,節點鏈接方向是單向的,只能訪問當前節點及下一節點,只能正向遍歷,從頭到尾遍

原创 場景異步加載、卸載

場景異步加載、卸載: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManag