小屋創作

日誌2021-09-17 21:13

【專案日誌】山鴉行動 UI導航、語言切換 9/17

作者:樂小呈

e04 9月也過一半了
遊戲主畫面的 UI 這周來了,於是又開始修修修

首先是 UI 導航
原本想到了一個新的做法打算砍掉重寫一個,但試了半天才發現 Unity SerializeField 和 interface 的搭配...沒辦法搭配,所以放棄做新的,就去把舊的導航程式重構了一遍,新版的等完成專案後在研究吧

UI 導航,能用滑鼠或鍵盤控制。


重弄了更好的編輯視覺化,舊版用 Debug 畫出來的線太細了,看的很吃力,所以這次改用 Handle.DrawBezier 畫,能自己調粗細。




還有新增了幾個選項 - 移動至導航紀錄、備用導航和脫離導航。
導航至紀錄就是字面意思,他不是導航到指定物件上,而是過去的紀錄,如果導航的入口不只有一個就適合用 (左上設定按鈕的橘線就是導航至紀錄)。



備用導航...也是字面意思,我把導航物件上加了個 navigable 的變數,如果嘗試移動到目標的時候對象的狀態是不可導航的,那就會嘗試去找備用連結的目標,如果備用也不可導航就繼續類推,直到找到(或找不到)目標。

這樣就能避免用一堆變數決定導航條件ㄌ,要擔心的就是備用連結可能無限遞迴,自己多注意ㄅ

然後脫離導航就是停留物件變成 unnavigable 的時候連向的目標。




語言切換
因為會有文本翻譯的要求,所以做 UI 的時候就連著一起完成了,省的之後麻煩。功能做出來了但還沒完全實裝。


從 Hugo 那裏得到的靈感,我用改路徑的方式來切換文本


為了方便我從編輯器裡設定,我弄了一個文本令牌的 ScriptableObject 當作仲介,只要放入其中一個語言的文本就會自動產生出路徑模板。如果要物件要儲存自己的文本的話,直接放文本令牌就好。



在遊戲初始化的時候 Manager 就會根據語言切換關鍵字,把讀取到到的 TextAsset 存入 ScriptableObject。需要文本的物件直接和令牌物件拿就好,不用接觸到 Manager,完美封裝語言系統 !

唯一的缺點就是為了防止 Json 實時轉換的開銷,所以令牌會在 Manager 輸入文本的時候就先完成轉換,但 ScriptableObject 沒辦法搞泛型,所以 Json 轉換後只能用 object 儲存。能避免 object 我是想盡量避免啦,但暫時找不到替代方案

就醬
趕工一周完成兩個系統和主畫面 UI,以及一大堆 BUG
雖然 Unity 就有內建的導航、而且語言插件也不少,但...我就造輪子 :P


今天下午打了 AZ,趁副作用還沒出來趕快生出日誌
六日兩天會不好過了


37

4

LINE 分享

相關創作

20240427 遊戲進度:程式優化

台灣獨立遊戲《人造機械之翼》參展CooMIC²,體驗JRPG風格的浪漫飛行冒險

Unity 現學現賣紀錄 - 2024.4

留言

開啟 APP

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

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