FairyGUI圖標文字合批失敗的原因

1)FairyGUI圖標文字合批失敗的原因
2)為什么Cubemap的內存占用超高
3)如何找到網格某個切面的中心點
4)為什么SafeZone在倒屏后方向相反


這是第428篇UWA技術知識分享的推送,精選了UWA社區的熱門話題,涵蓋了UWA問答、社區帖子等技術知識點,助力大家更全面地掌握和學習。

UI

Q1:項目現在使用的是FairyGUI,界面中會有一排類似下圖的比較常見的組合按鈕(圖+特效+文字)。

在FrameDebugger中注意到這部分的DrawCall情況有點慘;老項目用UGUI+TMP作類似的UI應該是沒有問題都能合的。父節點FairyBatching是勾了的,圖集是合好了的,圖和圖、文字和文字之間應該也沒有互相遮擋覆蓋;考慮到可能是特效穿插的問題,所以運行調試時直接把特效的節點刪掉了,還是不行。請問還有什么思路?

A:遇到過類似的問題。首先FairyGUI的結構在導出后應該就是固定的了,有可能你運行時做了修改刪掉改掉某些東西,但原來的區域規格和UI元素仍然占位。所以這里刪特效、對TextField覆蓋面積的調試檢查,可能都得請UI同學幫忙,回到FairyGUI編輯器階段處理和檢查,再重新導出看效果。

Q2:操作了下,確實有變化。但現在又有兩個新問題:

1. 確實導出前就把特效移除有效果,但圖和文字中夾著特效是表現需要,最終不大可能刪,這個是不是就沒什么辦法了?

2. 就算移除了特效,還是發現只有圖和圖之間合了,文字之間仍然不合。而且這次是確認了TextField之間也沒有重疊。這時候看FrameDebugger合批失敗原因變成了超過300個頂點不能動態合批。請問這個怎么解決呢?

A:第一個確實想不到什么辦法了。第二個就像FrameDebugger寫的一樣,你若是用了Shadow、Outline這種效果,文字的頂點就會成倍上升,再加上你字一多,就會超了。不過如果你這些表現上都要用的話,也和特效一樣沒什么辦法了。

感謝Faust@UWA問答社區提供了回答


Memory

Q:在MemoryProfiler里發現Graphics分類下面Cubemap的內存占用有40多MB,比我們項目用的網格都多,這個量正常嗎?

A:確實高了,尤其移動端游戲很少有必要用這么多。可以看下是不是有些Cubemap單個就占好幾MB。一個Cubemap本質是6張Texture 2D,所以一個10241024、ASTC44格式的資源就占6MB內存了。但其實我測下來其規格對表現的影響很微妙,像我們項目里有些物體上把Cubemap改到128128、ASTC88看上去都沒什么區別,但內存就小到可以忽視。最終也是說服美術在低分檔上用這版了。

感謝Faust@UWA問答社區提供了回答


Script

Q:我想要找到一個網格中某個切面的中心點,有什么實現的思路嗎?

A:提供一種追蹤的方式,大致思路是:

  • 通過Get Component Bounds得到網格包圍球的半徑,乘二以保證追蹤起點足夠遠,得到追蹤的半徑(Float)。
  • 在For Loop中配合Rotate Vector Around Aixs和追蹤半徑來得到足夠多的追蹤點(Float→Vector),它們是LineTrace的起點。
  • 再找到追蹤的終點,就可開始Line Trace(起點和終點還要加上Actor自身的Location,相當于Local→World)。
  • 返回的Out Hit中拿到Location便可加到一個新的Vector Array中(這個要是局部變量,這樣每幀得到的都是新的)。
  • 在For Loop的Completed階段用Draw Debug String來顯示內容(也可以別的類型),輸出一個白色的x,位置為Get Vector Array Average,即該切面的中心點。

藍圖如下:

進階版:若希望這個切面不只是水平面,還可以換成其它角度。加一個Plane進來,藍圖如下這樣改,旋轉Plane即可調整切面的角度(理論上還可以繼續優化,因為沒把Plane的位移算進去)。

藍圖如下:

該回答由UWA提供


Script

Q:在左右橫屏切換之后,原本設置的安全區位置出現了錯位,請問是什么原因呢?

A:該現象確認為UE的Bug,已在5.2中解決,可參考:
Unreal Engine Issues and Bug Tracker (UE-170632)

之前版本不修改源碼解決該問題的方法:在屏幕旋轉時,手動觸發安全區更新。

實現的關鍵點包括:

  • 安全區更新。可以通過全局代理觸發:

  • 獲取屏幕旋轉事件。屏幕旋轉時會觸發代理廣播,因此可以將相應函數綁定至該代理:

另外,對于移動平臺,可以直接使用PlatfromGameInstance提供的委托,在藍圖中綁定相應事件:

自己的GI類中可以做類似的實現:

基于以上關鍵點,項目組可根據自身項目需求進行實現。

實現參考:

1. 創建PlaftormGameInstance,并替換為項目使用的GI。

2. 創建UBlueprintFunctionLibrary類,并在其中實現函數,該函數用來觸發FCoreDelegates::OnSafeFrameChangedEvent.Broadcast()。

3. 在UI中,實現以下藍圖,注意其中對函數庫中更新函數的調用需要延遲調用。

針對該Bug的源碼變化:
5.2版本源碼中的修改:

5.2版本之前:

該回答由UWA提供

封面圖來源于網絡


今天的分享就到這里。生有涯而知無涯,在漫漫的開發周期中,我們遇到的問題只是冰山一角,UWA社區愿伴你同行,一起探索分享。歡迎更多的開發者加入UWA社區。

UWA官網:www.uwa4d.com
UWA社區:community.uwa4d.com
UWA學堂:edu.uwa4d.com

?

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

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

相關文章

[BUG]Cursor C++擴展不支持

本文內容組織形式 問題描述失效原因解決方案使用野版C Extension 猜你喜歡結語 問題描述 日期:20250419 操作系統: mac C代碼沒有辦法進行跳轉,并且和以前的文本標亮也不同 并且還有如下問題彈窗 C/C 擴展只能與 Microsoft Visual Studio…

深?理解 JVM 執?引擎

深?理解 JVM 執?引擎 其中前端編譯是在 JVM 虛擬機之外執?,所以與 JVM 虛擬機沒有太?的關系。任何編程語?,只要能夠編譯出 滿? JVM 規范的 Class ?件,就可以提交到 JVM 虛擬機執?。?于編譯的過程,如果你不是想要專?去研…

Ubuntu 部署 DeepSeek

在 Ubuntu 系統上部署 DeepSeek 模型,能讓用戶利用其強大的人工智能能力,同時保障數據的安全性與操作的自主性。不過,這一過程涉及諸多技術細節,需要謹慎操作。以下將為你詳細介紹在 Ubuntu 系統部署 DeepSeek 的操作步驟及注意事…

通義靈碼 Rules 庫合集來了,覆蓋Java、TypeScript、Python、Go、JavaScript 等

通義靈碼新上的外掛 Project Rules 獲得了開發者的一致好評:最小成本適配我的開發風格、相當把團隊經驗沉淀下來,是個很好功能…… 那么有哪些現成的 Rules 可以抄作業呢,今天我們官方輸出了 Java、TypeScript、Python、Go、JavaScript 等語…

山東大學軟件學院項目實訓-基于大模型的模擬面試系統-Token過期重定向問題

項目結構 ├── assets/ # 靜態資源(CSS/圖片) ├── components/ # Vue 組件 ├── layouts/ # 布局模板 ├── pages/ # 自動生成路由 ├── plugins/ # 插件(如 axios 攔截器) …

SAP案例:珠海漢勝科技SAP S/4 HANA智能制造實踐與價值實現

客戶簡介 珠海漢勝科技股份有限公司為高科技生產企業,成立于1985年,擁有員工近2000人。主要從事生產、銷售、研發:光纖光纜、電線、電纜及附件、鋁塑復合管;光纖光纜、電纜、電線生產項目的策劃及技術咨詢。它致力于為國內外無線電…

Spring Boot 項目中發布流式接口支持實時數據向客戶端推送

1、pom依賴添加 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>2、事例代碼 package com.pojo.prj.controller;import com.pojo.common.core.utils.String…

Zookeeper 可觀測性最佳實踐

Zookeeper 介紹 ZooKeeper 是一個開源的分布式協調服務&#xff0c;用于管理和協調分布式系統中的節點。它提供了一種高效、可靠的方式來解決分布式系統中的常見問題&#xff0c;如數據同步、配置管理、命名服務和集群管理等。本文介紹通過 DataKit 采集 Zookeeper 指標&#…

【安全】DVWA靶場滲透

【安全】DVWA靶場滲透 備注一、環境搭建二、弱口令&#xff08;Brute Force&#xff09;三、命令注入&#xff08;Command Injection&#xff09;四、CSRF&#xff08;Cross Site Request Forgery&#xff09;五、文件包含&#xff08;File Inclusion&#xff09;六、文件上傳&…

Ubuntu22.04安裝QT、px4安裝環境

Ubuntu22.04安裝QGC編譯環境、QT、px4編譯環境 參考文檔版本說明安裝QGC安裝Ubuntu安裝QT配置px4安裝環境出現錯誤怎么辦 參考文檔 PX4 1.15 User Guide 版本說明 PX4&#xff1a;1.15.4 QGC&#xff1a; 安裝QGC 我使用的是pixhawk V5飛控&#xff0c;在QGC4.4 Guide里&a…

積木報表查詢出現jdbc.SQLServerException: 對象名 ‘user_tab_comment 的解決方法

目錄 前言1. 問題所示2. 解決方法前言 ?? 找工作,來萬碼優才:?? #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn 1. 問題所示 使用帆軟報表無錯,后續使用積木報表查詢出錯: 沒有顯示報表: 具體錯誤信息如下:

c++基礎·左值右值

一、左值與右值的本質特征 1. 基礎定義 左值 (lvalue) ? 可出現在賦值運算符左側 ? 可被取地址&#xff08;有明確存儲位置&#xff09; ? 通常為具名變量&#xff08;如int a 10;中的a&#xff09; 右值 (rvalue) ? 不可出現在賦值左側 ? 不可取地址&#xff08;無持久…

【Rust 精進之路之第9篇-所有權·核心】規則與移動 (Move):Rust 內存安全基石詳解

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025年4月20日 引言:沒有 GC,Rust 如何管好內存?答案是所有權! 在我們的 Rust 探索之旅中,我們已經學習了變量、數據類型、控制流、函數和強大的構建工具 Cargo。現在,我們將踏入 Rust 最…

嵌入式學習——opencv圖像庫編程

環境配置 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和圖像處理庫&#xff0c;廣泛用于各種計算機視覺任務&#xff0c;如圖像處理、視頻分析、人臉識別、物體檢測、機器學習等。它提供了豐富的函數和工具&#xff0c;用于處理…

一招破敵,掌控 React 渲染術:createRoot 與 root.render

前言 在這數字江湖中,前端門派百花齊放,React 一門尤為奇特,講究“以虛制實,以組件馭天下”。眼下你我初入江湖,第一關便是掛載組件之術。倘若不懂 createRoot 與 root.render,那就像一個新晉小俠,連起手式都沒學會,點穴還沒碰到 DOM,自己先內傷三分。 來吧,少年!…

Linux常見工具如yum、vim、gcc、gdb的基本使用,以及編譯過程和動靜態鏈接的區別

目錄 一、工具的本質 二、一些常用的工具 1.yum 2.vim 1&#xff09;vim的三種基本模式&#xff1a; 2&#xff09;vim的基本操作 ①命令模式下的基本操作&#xff1a; ②插入模式&#xff1a; ③底行模式&#xff1a; 3&#xff09;vim的配置&#xff1a;讓他變得更好用 3.gcc…

JavaScript 一維數組轉不含零的兩個數

問題描述&#xff1a; /*** param {number} n* return {number[]}*/ var getNoZeroIntegers function(n) {for(let i 1;i<n;i){if(String(i).indexOf(0) -1&&String(n-i).indexOf(0) -1){return [i,n-i]}}};String類型indexOf()函數如果找不到字串則返回-1&…

力扣DAY60-61 | 熱100 | 回溯:單詞搜索、分割回文串

前言 中等 √ 繼續回溯&#xff0c;不知咋地感覺這兩題有點難度&#xff0c;是因為隔一天就手感生疏了嗎&#xff1f; 單詞搜索 我的題解 定義方向數組、二維訪問數組。圖搜索&#xff0c;向上下左右每個方向搜索&#xff0c;需要更新的信息&#xff1a;坐標、是否遍歷過、…

超簡單的git學習教程

本博客僅用于記錄學習和使用 前提聲明全部內容全部來自下面廖雪峰網站&#xff0c;如果侵權聯系我刪除 0.前言 相信有不少人被推薦那個游戲學習git&#xff0c;一個不止我一個完全沒學習過的進去后一臉懵&#xff0c;半天都通不過一關然后就放棄了&#xff0c;我個人覺得那個…

【每日八股】復習 MySQL Day1:事務

文章目錄 復習 MySQL Day1&#xff1a;事務MySQL 事務的四大特性&#xff1f;并發事務會出現什么問題&#xff1f;MySQL 事務的隔離級別&#xff1f;不同事務隔離級別下會發生什么問題&#xff1f;MVCC 的實現原理&#xff1f;核心數據結構版本鏈構建示例可見性判斷算法MVCC 可…