1. 程式人生 > >巧妙設定Texture Type,將ShadowMask記憶體佔用變成之前的1/4

巧妙設定Texture Type,將ShadowMask記憶體佔用變成之前的1/4

0x00 前言

在這篇文章中,我選擇了過去一週Unity官方社群交流群中比較有代表性的幾個問題,總結在這裡和大家進行分享。同時,也歡迎大家加入我們這個討論乾貨的官方技術群,交流看法分享經驗。

Unity官方社群交流群:629212643

0x01 Editor

Q: 請問可以通過script修改Scene View的Shading Mode嗎?
螢幕快照 2018-07-06 下午4.39.27.png

A:可以通過指令碼來修改Scene View的Shading Mode,只需要修改UnityEditor.SceneView.lastActiveSceneView.renderMode,選擇自己想要的Shading Mode即可,其中renderMode是一個DrawCameraMode型別的列舉。
關於DrawCameraMode,可以參考這個文件:

https://docs.unity3d.com/ScriptReference/DrawCameraMode.html

Q: 請問一下,在Unity Editor中可以開啟右上角的Stats來檢視當前場景的一些效能資料指標,這些資料可以通過指令碼來獲取嗎?
B7FE2A39FFA3BD6B4C9338A1461E81F1.png

A: 這裡的資料是可以通過C#指令碼來獲取的,在UnityEditor名稱空間中有一個UnityStats類。裡面包括了這些資料。
image.png
不過需要注意的是,由於UnityStats類定義在UnityEditor名稱空間內,所以只能在Editor中訪問。

0x02 Profiler

Q: 現在開發那邊給的反饋是現在記憶體佔用很高,會造成閃退。排除了Unity Profiler能夠統計到的一些資源的問題,現在最有可能就是DLL和三方外掛的問題,但是現在這部分的記憶體統計不到。所以給了我這邊一個需求,問有沒有辦法統計到。

A: 閃退的可能性有很多,你現在給的資訊太少,不太能給你什麼建議。你最好自己測一下,看看所謂“記憶體佔用很高”這個結論是怎麼測出來的。是PSS高還是單純的mono高,不然沒法解決。(北京-jadiek)

A: 收集下crash可以確定很多問題。比如oom 你可以確定下crash的機型記憶體是多少的,3g機型一般不會,不然你2g機型就會很頻繁的必現。
你的打包模式和專案實現方案也可能會對你的記憶體產生影響,比如c#程式碼為主使用il2cpp打包 那麼很可能你的程式碼片段的記憶體就有幾十兆。比如你的場景和批使用靜態和批方案 可能你的scenemem當中的mesh就有幾十兆。比如你的記憶體洩漏,可能會導致你的mono會持續增長上百兆。(北京-哎呀)

0x03 Lightmapping

Q: 請問下如果只有一個燈並且開啟了shadowmask來烘焙場景,生成的shadowmask都是4個通道的貼圖。這個比較浪費,有什麼優化的方法嗎?unity2017. 謝謝。

A: 可以將texture type設定為single channel,在2018中可以選擇保留的channel,選擇Red即可,這樣就生成了r8格式的texture,記憶體開銷會變成之前的1/4。image.png

0x04 Git&Unity

Q: 在用Git管理Unity版本的時候是如何處理二進位制檔案的呢?
目前Git提供的LFS功能是否能滿足實際需要呢?
實在查閱不到相關資料……

0x05 Resource

Q: 請問一下工程打包後,包裡會有一些字尾為resS的檔案。想問下這個檔案的內容是什麼?謝謝
image.png

A: resS字尾的檔案主要是texture的二進位制資料。如果是和場景有關的resS檔案,比如level0.resS,這種一般是由於在Lighting視窗中設定了Skybox Material。

0x06 Shader Graph

Q: shader graph 這個面板跟著滑鼠動 甩不掉 是bug嗎?
89947362489518B605C4846B759C400F.png

0x07 後記

好了,以上就是想和大家分享的幾個在群裡討論的小問題。
再次,歡迎大家加入我們這個討論技術的官方乾貨群,交流分享呀。

Unity官方社群交流群:629212643

相關推薦

巧妙設定Texture TypeShadowMask記憶體佔用變成之前1/4

0x00 前言 在這篇文章中,我選擇了過去一週Unity官方社群交流群中比較有代表性的幾個問題,總結在這裡和大家進行分享。同時,也歡迎大家加入我們這個討論乾貨的官方技術群,交流看法分享經驗。 Unity官方社群交流群:629212643 0x01 Editor Q: 請問可以通過script修改Scene V

關於AFNetworking設定Content-Type請求頭

伺服器那邊不知道怎麼調,自己對於伺服器不懂,給我的要求是在請求(POST)時,content-Type要求是html,然後引數(AFN中就是parameters)要求是json格式.... AF

Android除錯工具模板UI應用內懸浮窗動態顯示記憶體佔用

EnDebugBubble 一個良好的Debug工具入口,是每個app所必備的,對於凌亂的除錯工具整理和除錯功能的統一使用方法,需要一個外觀整潔,內部具體的顯示容器。 傳統方案 方案一:一般的除錯工

易學筆記-計算機底層-第1章:計算機系統漫遊/1.4 處理器處理記憶體中的指令/1.4.2 執行hello程式

執行hello程式 流程圖 解釋: 從鍵盤接受使用者輸入的hello 把該輸入通過IO橋送到匯流排介面,由匯流排介面送到暫存器 暫存器再通過I/O橋把hello送到主存 敲

易學筆記-計算機底層-第1章:計算機系統漫遊/1.4 處理器處理記憶體中的指令/1.4.1 系統的硬體組成

系統的硬體組成 示意圖: 匯流排: 第6章 系統配置與效能評價/6.3 輸入輸出系統/6.3.2 匯流排 概念:電晶體,負責在各個部件間傳遞資訊 被設計成傳遞定長的位元組快,比如4個位元組或者8個位元組,也就是32位或者64位 I

mysql 修改設定字符集utf8 修改為utf8mb4,支援emoji表情

utf-8編碼可能2個位元組、3個位元組、4個位元組的字元,但是MySQL的utf8編碼只支援3位元組的資料,而移動端的表情資料是4個位元組的字元。如果直接往採用utf-8編碼的資料庫中插入表情資料,java程式中將報SQL異常: java.sql.SQLExcept

有一段文字文字中的所有單詞存放到一個字元指標陣列中(要求每個單詞記憶體恰好)

char a[] = "  my    name is hanmeimei lilei and you no fine thanks  ";     int i = 0;//迴圈變數 int j = 0;//記錄每個單詞的長度 int k = 0;//記錄指標陣列的下

WINDOWS2008快取設定工具解決系統執行久了因系統快取造成實體記憶體佔用高僵死的問題

宣告: 造成伺服器卡死的原因是因為虛擬記憶體設定過低,請大家設定虛擬記憶體時不能小於實體記憶體. 比如實體記憶體8G,虛擬記憶體不能低於8G,最好是系統預設的實體記憶體的1.5倍.即12G. 浪費點硬碟空間也沒辦法了. . 看到有朋友也遇到我們之前一樣的問題。http://

Unity3d 匯入圖片 自動修改Texture Type為Sprite 2D and UI 及設定 Packing

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

springmvc和springboot分別設定攔截器列印記憶體資訊訪問時間等日誌資訊

SpringMVC提供了一個攔截器介面供我們呼叫:HandlerInterceptor,這個介面有三個待實現的方法: preHandle方法 進入 Handler方法之前執行 用於身份認證、身份授權 比如身份認證,如果認證不通

Windows 10 設定不用Microsoft賬戶登入Administrator與Microsoft賬戶解綁登出Microsoft賬戶

      按下WIN+R,執行中輸入:regedit 開啟登錄檔編輯器。 1、進入HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users 項,由於許可權問題,有可能只能看到SAM項,後面的Domains\Account\Users

Flume1.4 相關引數設定收集的資料彙總到hdfs解決許多小檔案問題

參照官方文件,將 flume client 收集的日誌檔案 彙總到  flume sink收集端,然後儲存到hdfs 中,預設會按生成許多小檔案,如圖所示 實際中可能只需要生成一個檔案即可,這就涉及到了幾個相關引數設定如下即可 需要修改的檔案位於 flume/con

普元 EOS Platform 7.5 datagrid裡使用nui-datepicker日期型別設定為dateFormat="yyyy-MM-dd"但編輯後日期顯示仍包含時分秒

【問題】 EOS Platform 7.5 datagrid裡使用nui-datepicker,將日期型別設定為dateFormat="yyyy-MM-dd",但編輯後,日期顯示仍包含時分秒 編輯前,顯示為年月日: 編輯後,現在顯示為年月日時分秒 【解答】

HBASE---LSM樹——放棄讀能力換取寫能力多次修改放在記憶體中形成有序樹再統一寫入磁碟

LSM樹(Log-Structured Merge Tree)儲存引擎代表資料庫:nessDB、leveldb、hbase等核心思想的核心就是放棄部分讀能力,換取寫入的最大化能力。LSM Tree ,這個概念就是結構化合並樹的意思,它的核心思路其實非常簡單,就是假定記憶體足夠

tableview 選中一行後不顯示選中顏色的方法 tableview 選中一行後不顯示選中顏色不要tableview的allowsSelection設定成NO那樣的話可能導致tablev

tableview 選中一行後,不顯示選中顏色的方法 第一種方法:設定選中無顏色變化 tableview 選中一行後,不顯示選中顏色,不要將tableview的allowsSelection設定成NO

【解決方案】對不起 php.ini 中的 short_open_tag 設定為 On否則無法繼續安裝。

安裝的wamp套件,訪問http://localhost/Discuz/install/index.php進行安裝操作,提示 對不起,請將 php.ini 中的 short_open_tag 設定為 On,否則無法繼續安裝。 您必須解決以上問題,安裝才可以繼續 解決方案

input type="checkbox"選中或取消value存入隱藏域

<pre name="code" class="javascript">$(function(){ //將需要提交的checkbox的value,拼成字串,放入隱藏域replyway $('input[type=checkbox]').ch

JFreeChart簡單例子_建立柱狀圖(當遇到中文亂碼時各個部分的字型分別設定一下就行了)

      public static JFreeChart getChart(CategoryDataset dataset)     {         //此標題  ‘某社團各部門 ’將被後面的chart.setTitle的標題  ‘某社團各部門柱狀圖’ 覆蓋         JFreeChart ch

一個數據庫查詢方法(可以動態設定查詢引數設定查詢條件)巧妙的組合sql語句

public <T> QueryResult<T> getScrollData(Class<T> entityClass,String wherejpql,Object[] queryParams,   int firstindex, in

Android實現弱引用AsyncTask記憶體洩漏置之度外。

AsyncTask可謂是在Android中隱藏很深,曾經叱吒風雲的功夫級人物。它的存在讓網路和UI的通訊變得異常簡單和輕鬆。AsyncTask使用上的簡單也得以讓很多開發者青睞。一般情況下,AsyncTask會作為內部類在Activity或者Fragment中實現,例如: