關于CanvasRenderer.SyncTransform觸發調用的機制

1)關于CanvasRenderer.SyncTransform觸發調用的機制
2)小游戲Spine裁剪掉幀問題
3)Dedicated Server性能問題
4).mp4視頻放入RT進行渲染的性能分析閉坑指南


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

UI

Q:已知UGUI主要耗時函數Rendering.UpdateBatches下的堆棧CanvasRenderer.SyncTransform調用次數較高確實會導致更高的整體耗時。看文檔和字面意思,應該是UI元素Transform信息變化后進行同步,但實際項目中測下來發現調用次數遠比預期的要高,所以這個東西實際的機制到底是什么?

A:在Unity 2021和2022的較新穩定版本上都做了實驗,發現有以下幾種情況:

  1. 任何UI元素Transform信息變化(如位移、旋轉、拉伸,例如飄字這類Ul動畫)都會導致自身觸發一次CanvasRenderer.SyncTransform。若同時發生Transform信息變化的UI元素多,則顯然會導致調用次數高,比如像我們項目場景中玩家和野怪單位的大量HUD元素會隨著玩家視角變化頻繁位移。
  2. 調用SetActive(True)激活UI元素時,會使當前Canvas下和其父Canvas下所有UI元素都觸發CanvasRenderer.SyncTransform。特別地,調用SetActive(False)隱藏UI元素時,不會觸發。
  3. Instantiate實例化UI元素時,會使當前Canvas下和其父Canvas下所有UI元素都觸發CanvasRenderer.SyncTransform。
  4. Destroy銷毀UI元素時,會僅使當前Canvas下所有UI元素都觸發CanvasRenderer.SyncTransform。

PS:以上API未實際生效時(如對一個已經被激活的對象調用SetActive(True)),則不會觸發CanvasRenderer.SyncTransform。

所以定位到問題后,優化手段上還是UI這塊老生常談的解放方案:即對1這種情況主要考慮控制更新頻率;對其他情況則是關注Canvas的層級設計,做好動靜分離。

該回答由UWA提供,歡迎大家轉至社區交流:
UWA問答 | 游戲開發者互動問答社區 | 侑虎科技


Animation

Q:小游戲Spine裁剪為什么幀率一下子就下來了,請問有什么解決辦法嗎?

A:Spine Clipping性能開銷很大,以下文檔里面說了解決方案,就是要么不用,要么減少Clipping Attachment組件多邊形的復雜程度:
Clipping attachments - Spine User Guide

感謝李顯得@UWA問答社區提供了回答


Server

Q:把一個帶物理世界的Scene通過Dedicated Server-Linux發布成服務器程序,想通過Mirror實現狀態同步,但是發現CPU占用率好高,在一個2核的服務器中都有10%++,這還只是靜止的場景,即使場景Collider只有一個,也是那么高,請問這種的應該怎么辦?

像上述這種情況,一個局內對戰就是一個服務器程序,但一個服務器根本就開不了幾個服務器程序。

針對以上問題,有經驗的朋友歡迎轉至社區交流:
UWA問答 | 游戲開發者互動問答社區 | 侑虎科技


Rendering

Q:項目后期可能會大量使用視頻,請問對.mp4視頻放入RT進行渲染的性能分析有沒有什么閉坑指南,比如對于視頻解碼產生的內存進行控制等等。

針對以上問題,有經驗的朋友歡迎轉至社區交流:
UWA問答 | 游戲開發者互動問答社區 | 侑虎科技

封面圖來源于網絡


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

UWA官網:www.uwa4d.com
UWA社區:community.uwa4d.com

?

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

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

相關文章

Kronecker分解(K-FAC):讓自然梯度在深度學習中飛起來

Kronecker分解(K-FAC):讓自然梯度在深度學習中飛起來 在深度學習的優化中,自然梯度下降(Natural Gradient Descent)是一個強大的工具,它利用Fisher信息矩陣(FIM)調整梯度…

【HTML— 快速入門】HTML 基礎

準備工作 vscode下載 百度網盤 Subline Text 下載 Sublime Text下載 百度網盤 vscode 下載 Sublime Text 是一款輕量好用的文本編輯器,我們在寫前端代碼時,使用 Sublime Text 打開比使用記事本打開,得到的代碼體驗更好,比 vscode…

鴻蒙開發深入淺出01(基本環境搭建、頁面模板與TabBar)

鴻蒙開發深入淺出01(基本環境搭建、頁面模板與TabBar) 1、效果展示2、下載 DevEco Studio3、創建項目4、新建頁面模板5、更改應用信息6、新建以下頁面7、Index.ets8、真機運行9、圖片資源文件 1、效果展示 2、下載 DevEco Studio 訪問官網根據自己的版本…

自動駕駛泊車算法詳解(一)

自動駕駛泊車算法是自動駕駛技術中的重要組成部分,主要用于實現車輛在復雜場景下的自動泊車功能(如垂直泊車、側方位泊車、斜列泊車等)。其核心目標是通過感知、規劃和控制技術,使車輛在無人工干預的情況下安全、高效地完成泊車動…

鴻蒙next 點擊穿透實現

點擊穿透可以參考華為開發的保留文章,該章節只能在developer preview版本下查看 點擊穿透 主要的方法是hitTestBehavior // xxx.ets Entry Component struct HitTestBehaviorExample {build() {// outer stackStack() {Button(outer button).onTouch((event) > {console.i…

27.[前端開發-JavaScript基礎]Day04-函數基本使用-遞歸-變量作用域-函數式編程

一、JavaScript函數 1 認識JavaScript函數 程序中的foo、bar、baz 認識函數 函數使用的步驟 2 函數的聲明和調用 聲明和調用函數 函數的參數 有參數的函數練習 函數的返回值 函數的練習 arguments參數(JS高級再學習) 3 函數的遞歸調用 函數中調用函數…

藍橋杯練習代碼

一、最長公共前綴 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 ""。 示例 1: 輸入:strs = ["flower","flow","flight"] 輸出:"fl"示例 2: 輸入:strs = ["dog",&q…

添加成對約束后的標簽傳播算法研究:使用Python語言編寫算法,在空手道數據集下驗證算法的準確性,在一定程度上解決非對齊問題

背景: 輔導的過程中遇到了一個比較新穎的問題,下面是我對這個問題的分析和簡要思路介紹。 思路分析: 這算機器學習下面的無監督學習,標簽傳播算法簡稱LPA,傳統的標簽傳播算法會出現非對齊問題,一句話描述就…

鴻蒙開發第4篇__關于在鴻蒙應用中使用Java語言進行設計

本博文很重要 HarmonyOS從 API8 開始不再支持使用Java作為開發語言,未來的新功能將在ArkTS中實現. API 8對應的是HarmonyOS 3.0.0版本。請看下圖: 因此, 讀者如果看到類似《鴻蒙應用程序開發》(2021年版本 清華大學出版計)書 還使用Java語言…

sklearn機器學習 Python代碼通用模板

以下是一個使用 scikit-learn(sklearn)進行機器學習的通用 Python 代碼模板。這個模板涵蓋了數據加載、預處理、模型訓練、評估和預測的基本流程,適用于常見的機器學習任務。 python # 導入必要的庫 import numpy as np import pandas as …

P9420 [藍橋杯 2023 國 B] 雙子數--最高效的質數篩【埃拉托斯特尼篩法】

P9420 [藍橋杯 2023 國 B] 雙子數 題目 分析代碼 題目 分析 首先&#xff0c;我們如何找到雙子數&#xff1f; 1&#xff09;找到所有質數滿足范圍內的質數&#xff08;即至少質數^2<23333333333333) 我們看見雙子數x的范圍2333<x<23333333333333&#xff0c;又因為…

deepseek 導出導入模型(docker)

前言 實現導出導入deepseek 模型。deepseek 安裝docker下參考 docker 導出模型 實際生產環境建議使用docker-compose.yml進行布局&#xff0c;然后持久化ollama模型數據到本地參考 echo "start ollama" docker start ollama#壓縮容器內文件夾&#xff0c;然后拷貝…

mysql有索引但是查詢沒有使用索引是什么問題

關鍵原因分析 索引選擇性問題 如果 order_id 沒有索引&#xff0c;即使 insert_time 有索引&#xff0c;優化器可能認為先通過 order_id 過濾數據更高效。但由于 order_id 無索引&#xff0c;只能全表掃描后過濾。即使 insert_time 有索引&#xff0c;如果滿足 insert_time >…

【Qt】為程序增加閃退crash報告日志

背景 隨著軟件代碼量的增加&#xff0c;軟件崩潰閃退的肯能行越來越大&#xff0c;其中一些是難以復現的&#xff0c;比如訪問了訪問了非法地址、被操作系統殺死等。 為此&#xff0c;在軟件出現閃退情況時&#xff0c;盡可能多的記錄閃退發生時信息&#xff0c;對排查閃退原…

C#從入門到精通(35)—如何防止winform程序因為誤操作被關閉

前言: 大家好,我是上位機馬工,碩士畢業4年年入40萬,目前在一家自動化公司擔任軟件經理,從事C#上位機軟件開發8年以上!我們在開發的上位機軟件運行起來以后,一般在右上角都有一個關閉按鈕,正常情況下點擊關閉按鈕就能關閉軟件,但是不排除我們不想關閉軟件,但是因為不…

ffmpeg avdevice_register_all 注冊設備的作用

在 FFmpeg 中&#xff0c;avdevice_register_all() 是一個用于注冊所有輸入和輸出設備的函數。它是 FFmpeg 的 libavdevice 模塊的一部分&#xff0c;專門用于處理音頻和視頻的輸入/輸出設備&#xff08;如攝像頭、麥克風、屏幕捕獲等&#xff09;。 以下是對 avdevice_regist…

[RH342]tcpdump

[RH342]tcpdump 1. 題目2. 解題 1. 題目 服務器serverc 和 servera 之間有進程定期發送一個明文密碼,找出它2. 解題 找出通信端口 抓包分析 tcpdump -X -vv port 6644紅框中就是密碼,所以密碼是root123

連接Sql Server時報錯無法通過使用安全套接字層加密與 SQL Server 建立安全連接

文章目錄 一. 前言二. 解決方案 方案1方案2 三. 總結 一. 前言 在《數據庫原理》這門課的實驗上&#xff0c;需要使用SQL Server&#xff0c;然后使用jdbc連接sql server突然報錯為&#xff1a;SQLServerException: “Encrypt”屬性設置為“true”且 “trustServerCertific…

從 Spring Boot 2 升級到 Spring Boot 3 的終極指南

一、升級前的核心準備 1. JDK 版本升級 Spring Boot 3 強制要求 Java 17 及以上版本。若當前項目使用 Java 8 或 11&#xff0c;需按以下步驟操作&#xff1a; 安裝 JDK 17&#xff1a;從 Oracle 或 OpenJDK 官網下載&#xff0c;配置環境變量&#xff08;如 JAVA_HOME&…

Buildroot 添加自定義模塊-內置文件到文件系統

目錄 概述實現步驟1. 創建包目錄和文件結構2. 配置 Config.in3. 定義 cp_bin_files.mk4. 添加源文件install.shmy.conf 5. 配置與編譯 概述 Buildroot 是一個高度可定制和模塊化的嵌入式 Linux 構建系統&#xff0c;適用于從簡單到復雜的各種嵌入式項目. buildroot的源碼中bui…