創作內容

25 GP

【研究】更方便的文本標籤定義器 12/26

作者:樂小呈│2021-12-26 22:19:36│巴幣:50│人氣:480
這幾天都在搞這玩意兒

上周又繼續推專案了,更新了新的裝備界面,另一邊有發文可以去看噢
【山鴉行動】- 27 年度總結,獨立遊戲開發Q & A

總之大部分都只要換上資源就好,有動到程式的只有一點點,要把文字色加回 text 裡面。Unity 的 ui text 是可以使用 css 和 html 標籤的,雖然實際支援的標籤不多啦,但如果要上色、粗體或改大小什麼的都蠻方便的,叫做 rich text,可以給 text 的特定段落添加效果。


雖然說這樣相對好幾個 text component 去拼輕鬆,但實際在編輯文本的時候還是有點繁瑣,可能只是要改文本裡 highlight 的顏色什麼的,就要改動整個原始文本。

所以就想說能不能換種作法搞,弄一個中繼的系統可以把自訂標籤轉換為 rich text,就能省一些作業了。最後還是用令牌化的那套,有夠方便

建立標籤
資料夾右鍵 > create > TagableTexts > PatternToken 就能建立出一個標籤定義令牌了。


標籤定義
設定這個標籤的關鍵字以及輸入模式。輸入模式指的是這個標籤的輸入是什麼 <keyword input/>,當然也可以不接受輸入,後面會說到。然後最後會打包成一個 Regular expression,方便後面的動作。
命名錯誤,應該叫 input rule 的

輸出設定
這裡就是設定檢測到標籤後要做的動作,基本上就是設定要把標籤的內容替換成什麼而已。我用 reorderablelist 方便編輯替換內容,然後也可以設置 Tag Input 去存取標籤的輸入。


輸出預覽
我也在 inspector 上加了簡單的效果預覽,可以看到標籤替換過後的輸出,以及 rich text 的效果長怎樣,這樣就不用在另外測試標籤有沒有效了。預覽有三種模式,自動、自訂和文本輸入,就是方便測試用而已。

調用方法
對外的接口主要就是 ApplyToText(strig input) 和幾個多載而已,把要檢測的文本輸入進令牌就好。像這樣



至於多載的 Func<string, string, string> replaceHandler,可以覆寫替換規則,把要替換的算法傳進去就好。有有興趣就自己翻原始碼的 tagOutputDefine.DefaultReplaceHandler 研究ㄅ。


然後 Action<string> inputListener 是標籤監聽,在文本檢測的時候如果檢測到對應的標籤就會觸發,用來做一些進階動作。



可以像是這樣檢測到關鍵字時,出現補充文字。
又命名錯了,叫 onTagDetected 好像比較好 D:

打包
就是把幾種不同的 tag token 打包起來,能在 apply 的時候一口氣作用,但相對就不能覆寫規則或是添加監聽了。


檔案上傳到 github,有興趣的可以用用看,用這個系統的話就能夠預先定義好簡化的標籤,要修改實際效果也只要動到 token 而已,能省去一些編輯文本時的繁瑣作業。但這只是一個中繼的系統而已,所以它沒辦法獨立運作,前後還要看你們怎麼搭配ㄌ。

想翻 editor code 研究的也可以,架構應該整理得蠻乾淨的了,但我沒有註解的習慣,所以請自己通靈吧 :P

總之,有什麼建議或 bug 都請說吧,有空就會更新這系統,待做清單還長長一條的。



就醬,又要新年ㄌ...
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5349772
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:遊戲開發|Unity|程式

留言共 1 篇留言

FunS
考慮用Textmeshpro嗎XD 我印象中他也能自定義 我還要去看一下

12-26 22:26

樂小呈
不要!!! 12-26 22:31
樂小呈
這東西要維護有一堆毛12-26 22:31
樂小呈
我寧願自己搞 text 系統也不要用他 [e28] [e28] [e28] [e28]12-26 22:31
我要留言提醒:您尚未登入,請先登入再留言

25喜歡★angus945 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【閒聊】亂七八糟的近況... 後一篇:【閒聊】不是面試,但比面...

追蹤私訊切換新版閱覽

作品資料夾

ilove487奇幻小說連載中
《克蘇魯的黎明》0667.掉到海裡要先救誰?看更多我要大聲說9分前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】