【Unity基礎】兩個關于UGUI中Text對非英文字體支持的問題

在這里插入圖片描述

問題1:Unity中為什么UGUI中的Text(Textmeshpro)默認不支持非英文字體,而legacy中的text卻可以呢?

在Unity中,TextMeshPro(TMP)默認不支持非英文字體,而Legacy Text支持,主要原因如下:

1. 字體資源管理

  • TextMeshPro:使用自定義字體資源(如.fontasset),需手動生成包含所需字符的字體資源。默認情況下,TMP僅包含英文字符以節省資源。
  • Legacy Text:依賴系統字體,支持所有系統安裝的字體,包括非英文字符。

2. 性能優化

  • TextMeshPro:生成字體圖集時,包含的字符越多,資源占用越大。默認僅包含英文字符以減少內存和存儲開銷。
  • Legacy Text:直接使用系統字體,無需額外生成字體資源,因此支持所有字符。

3. 字符集生成

  • TextMeshPro:需通過TMP的字體資產創建工具生成包含所需字符的字體資源。如果未生成包含非英文字符的字體資源,則無法顯示。
  • Legacy Text:直接使用系統字體,無需額外生成字符集。

4. 歷史原因

  • TextMeshPro:作為更現代的文本渲染方案,設計時更注重性能和靈活性,默認配置偏向英文用戶。
  • Legacy Text:作為舊版系統,設計時未過多考慮性能優化,因此支持更廣泛的字符集。

解決方案

要讓TextMeshPro支持非英文字體,需手動生成包含所需字符的字體資源:

  1. 在Unity中創建或導入字體文件(如TTF)。
  2. 使用TMP的字體資產創建工具生成包含非英文字符的字體資源。
  3. 在TextMeshPro組件中使用生成的字體資源。

總結

TextMeshPro默認不支持非英文字體是為了優化性能和資源管理,而Legacy Text直接使用系統字體,因此支持更廣泛的字符集。通過手動生成字體資源,可以讓TextMeshPro支持非英文字體。

問題2:UGUI中已經有了TextMeshPro為什么要還要保留Legacy中的這四個控件呢?

在Unity中,盡管TextMeshPro(TMP)提供了更強大的文本渲染功能,但Legacy UI系統中的四個控件(TextImageRawImageButton)仍然被保留,主要原因如下:


1. 向后兼容性

  • 歷史項目:許多舊項目依賴Legacy UI系統,移除這些控件會導致項目無法正常運行。
  • 平滑過渡:Unity希望開發者能夠逐步遷移到TMP,而不是強制立即切換。

2. 簡單場景的需求

  • 輕量級需求:對于簡單的UI需求(如僅顯示英文文本或基本圖像),Legacy控件足夠使用,且更輕量。
  • 快速開發:Legacy控件配置簡單,適合快速原型開發或簡單UI場景。

3. 性能考慮

  • 低開銷:Legacy控件在性能上比TMP更輕量,適合對性能要求較高的場景(如移動端或低端設備)。
  • TMP開銷:TMP功能強大,但生成字體資源和渲染復雜文本時開銷較大。

4. 學習成本和遷移成本

  • 學習曲線:TMP功能強大但配置復雜,新手可能更傾向于使用Legacy控件。
  • 遷移成本:將Legacy控件替換為TMP需要額外工作(如生成字體資源、調整UI布局等),保留Legacy控件可以降低遷移成本。

5. 功能覆蓋

  • TMP并非萬能:TMP主要用于文本渲染,而Legacy控件(如ImageRawImageButton)在圖像和交互功能上仍然有用。
  • 混合使用:在某些場景中,開發者可能希望混合使用Legacy控件和TMP,以達到最佳效果。

6. Unity的漸進式改進策略

  • Unity傾向于逐步改進其系統,而不是徹底廢棄舊功能。保留Legacy控件是為了給開發者更多選擇,同時逐步引導他們使用更現代的解決方案。

總結

保留Legacy控件的核心原因是為了向后兼容簡化開發流程降低性能開銷以及減少遷移成本。盡管TMP功能更強大,但Legacy控件在簡單場景中仍然有其價值。Unity的目標是提供一個平滑的過渡路徑,而不是強制開發者立即切換到TMP。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921591.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921591.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921591.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

碎片時間干活的好手(requestIdleCallback)

🟢 What —— 它是什么? requestIdleCallback(callback[, options]) 是瀏覽器提供的一個 API,用來在主線程空閑時執行一些優先級不高的任務。 它的特點: 異步執行:不會打斷關鍵的渲染、交互、動畫。節省性能&#xff1…

第三方網站測評:【WEB應用文件包含漏洞(LFI/RFI)的測試步驟】

文件包含漏洞分為本地文件包含(LFI)和遠程文件包含(RFI)兩類。LFI允許讀取服務器本地文件,RFI可執行遠程服務器上的惡意代碼。PHP應用中include()、require()等函數未正確過濾用戶輸入時易產生此類漏洞。 檢測URL中可能包含文件的參數,常見特征如下: 參數名包含file、pa…

網絡爬蟲(web crawler)

文章目錄一、什么是網絡爬蟲二、爬蟲工作流程詳解第1步:起始點 - URL種子庫(Seed URLs)第2步:大腦 - 調度器(Scheduler)第3步:雙手 - 網頁下載器(Downloader)第4步&#…

redis的高可用(哨兵)

Redis 的主從復制模式下,一旦主節點由于故障不能提供服務,需要人工進行主從切換,同時大量的客戶端需要被通知切換到新的主節點上,對于上了一定規模的應用來說,這種方案是無法接受的,于是Redis從2.8開始提供…

安徽某能源企業積極推進運維智能化轉型,引入高壓配電房機器人巡檢系統

在工業自動化與智能化深度融合的當下,機器人技術已成為能源行業提質增效的關鍵支撐。特別是在配電房這類高壓電力核心區域的運維工作中,傳統人工巡檢不僅面臨效率低下、巡檢周期長的困境,更因人員直接接觸高壓設備而存在極高的安全風險。此&a…

數據結構_二叉平衡樹

#include <stdio.h> #include <stdlib.h> #define max(a,b) ((a > b)? (a):(b))//平衡二叉樹的節點結構 typedef struct AVL_TreeNode{int data; //數據域struct AVL_TreeNode* l;struct AVL_TreeNode* r;int h;//記錄樹的高度&#xff0c;用于計算平衡因子 }…

掃描件、PDF、圖片都能比對!讓文檔差異無所遁形

智能文檔比對系統可精準識別文檔差異&#xff0c;解決金融、法律等多方協作場景下的版本混亂、審核低效和合規風險問題&#xff0c;將一份百頁文檔的人工核對從數小時縮短至3分鐘以內。 文檔差異比對常見場景有哪些&#xff1f; 每一次文檔的修改都可能帶來潛在風險&#xff0c…

excel里面店鋪這一列的數據結構是2C【uniteasone17】這種,我想只保留前面的2C部分,后面的【uniteasone17】不要

這個結構是&#xff1a; 2C【uniteasone17】只要取前面的 2C 部分&#xff0c;可以用 Excel 的 公式 或者 文本函數 來實現。 方法 1&#xff1a;使用公式提取 假設店鋪數據在 A2 單元格&#xff1a; LEFT(A2,FIND("【",A2)-1)&#x1f449; 解釋&#xff1a; FIND(“…

四、神經網絡的學習(中)

4.3 數值微分梯度法使用梯度的信息決定前進的方向。本節將介紹梯度是什么、有什么性質等內容。4.3.1 導數假如你是全程馬拉松選手&#xff0c;在開始的10分鐘內跑了2千米。如果要計算此時的奔跑速度&#xff0c;則為2/10 0.2&#xff3b;千米/分&#xff3d;。也就是說&#x…

Jenkins 監控方案:Prometheus + Grafana 實踐

這兩天在運維群里面看到有人說 Jenkins 節點也可以監控&#xff0c;以前沒想過搞這個&#xff0c;現在就對公司 Jenkins 搞搞順便記錄下唄。 一、使用 Jenkins Prometheus 插件&#xff08;推薦方式&#xff09; 1. 安裝插件 在 Jenkins 插件管理里搜索并安裝 Prometheus Me…

用博圖FB類比c#中sdk的api

我有一個大膽的想法我準備自己做個簡單的視覺軟件來鍛煉自己的c#編程能力&#xff0c;我準備用到海康工業機器人官網下載的mvs軟件的sdk,聽說sdk的主要作用就是api提供了開放的接口給第三方免費調用。按照我的理解&#xff0c;api接口就像西門子博圖的FB塊&#xff0c;所謂api接…

【Leetcode】高頻SQL基礎題--1164.指定日期的產品價格

【Leetcode】高頻SQL基礎題–1164.指定日期的產品價格 要求&#xff1a;一開始&#xff0c;所有產品價格都為 10。編寫一個解決方案&#xff0c;找出在 2019-08-16 所有產品的價格。 以 任意順序 返回結果表。解題思路&#xff1a; 找到 2019-08-16 前所有有改動的產品及其最新…

Django全局異常處理全攻略

在 Django 中處理全局異常&#xff0c;有幾種常見的方式&#xff0c;通常目標是&#xff1a; 捕獲項目中未被單獨處理的錯誤統一返回給前端&#xff08;如 JSON 響應 / 自定義錯誤頁&#xff09;方便記錄日志1. 使用 Django 自帶的全局異常處理機制 Django 有一些內置的全局錯誤…

【開題答辯全過程】以電商數據可視化系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

MyBatis入門到精通:CRUD實戰指南

1. MyBatisORM&#xff1a;對象關系映射O&#xff08;Object&#xff09;&#xff1a;Java虛擬機中的Java對象R&#xff08;Relational&#xff09;&#xff1a;關系型數據庫M&#xff08;Mapping&#xff09;&#xff1a;將Java虛擬機中的Java對象映射到數據庫表中一行記錄&am…

WebRTC開啟實時通信新時代

摘要&#xff1a;WebRTC&#xff08;Web實時通信&#xff09;是一項開源技術&#xff0c;支持瀏覽器直接進行低延遲音視頻通信和數據傳輸&#xff0c;無需安裝插件。其核心技術包括RTCPeerConnection&#xff08;建立點對點連接&#xff09;、MediaStream&#xff08;媒體流處理…

【51單片機8*8點陣顯示箭頭動畫詳細注釋】2022-12-1

緣由51單片機實現8*8滾動箭頭的程序,運行時什么圖案都沒有,甚至根本不亮 - 24小時必答區 #include<reg52.h> unsigned char code M[]{0xff,0xff,0xfe,0xfd,0xf8,0xfd,0xfe,0xff,0xff,0xff,0xfd,0xfb,0xf0,0xfb,0xfd,0xff,0xff,0xff,0xfb,0xf7,0xe0,0xf7,0xfb,0xff,0xff,0…

手撕Redis底層3-持久化機制與集群化方案

1.Redis持久化機制Redis設計了兩種持久化落盤機制&#xff1a;RDB和AOF1.1 RDB持久化RDB持久化是Redis的數據快照&#xff0c;簡單來說就是把內存中的所有數據都記錄到磁盤中&#xff0c;當Redis實例故障重啟后&#xff0c;從磁盤中讀取快照文件來恢復數據。快照文件稱為RDB文件…

mysql中null值對in子查詢的影響

1、場景 有這樣一個查詢&#xff0c;有些時候是正確的&#xff0c;有些時候沒報錯但是又查詢不到數據&#xff0c;分析數據排查后發現當user_id字段存在null值的時候查詢不到數據。select * from table1 where id in (select user_id from talbe2 where status1);2、問題 為什么…

如何在 tortoise-orm 內使用 JSON_EXTRACT

先說結論&#xff1a; # 假設 JsonField 名稱為 data&#xff0c;內容為 {"info": {"path": "我的資源創建"}} qs qs.filter(data__filter{"info.path": "我的資源創建"})我查看了 tortoise-orm 官方文檔&#xff0c;沒有這…