1. 程式人生 > >你必須知道的Unity引擎知識

你必須知道的Unity引擎知識

總論

  1. 開發者成長速度與上手速度是Unity在臺灣的優勢。
  2. 在Facebook與360劉灠器中預設安裝Unity Plugin。
  3. 大陸有超過400個Android商城。
  4. 認證培訓(新竹教育大學,高應科大等學校)。
  5. 鬼武者魂由Unity開發,Server端使用PHP。
  6. 開發者必須要注意的三階段:開發-平臺-廣告金流。

你不可不知的Unity開發技巧

  1. Unity三種網頁釋出的方式:WebPlayer,Flash(效能低下),Chrome NaCl(Native C++,不需要Plugin)。
  2. Plugin的版本分別:Stable,Release,Beta,Alpha。可以修改網頁碼來指定plugin的下載版本與來源。
  3. Web Caching License
    (收 費):"We offer a special extension of the Unity webplayer which can cache asset bundles locally. This is licensed under an agreement made by our business development team. Generally it is licensed to developers with a large anticipated revenue and not on a smaller scale basis."
  4. 如何動態更新Unity產品的Source Code:透過將程式碼輸出為二維的TextAsset,然後在包裝到AssetBundle中。
  5. Unity4已支援動態字型,nGUI2.6才支援動態字型(東亞字型)。(EZGUI目前就已支援-感謝永康ㄉㄉ堤供情報)
  6. GameObject.Destroy不會移除該物件的資源(Mesh,Texture,Material等)。
  7. ScaleForm僅支援Unity3.5.x
  8. NavMesh.Triangle() 函式
  9. 王者之劍<藍港線上>使用Unity開發的2D遊戲。
  10. Unity Cache Server是開發團隊用來在不同平臺(資源)發布時的加速方式。
  11. Asset Server已不建議使用。
  12. 疾風,91都會自己開發對Unity的金流SDK。
  13. 透過設定優化釋出的產品檔案大小。

行動平臺優化要點

  1. 每個動態物件(角色)的三角形面數在300到2000之間。
  2. 每個動態物件(角色)的Skinned Mesh Renderer僅用一個。
  3. 每個動態物件(角色)的材質數只用一個。
  4. 每個動態物件(角色)的骨架限制在30根以下。
  5. 靜態物件設定為Static,方可進行Static Batching。
  6. 在3.5使用靜態物件時移除Animation的元件。
  7. 地形(Terrain)的初始解析度設定為257以下。
  8. 地形(Terrain)筆刷貼圖數目控制在4以下。
  9. 貼圖解析度大小控制在1024以下。
  10. 3D遊戲開啟Mipmap會增加記憶體但是可加速效能。
  11. 貼圖uv控制在0~1。
  12. 音樂檔案使用ogg/mp3,短音效使用wav。
  13. 光源使用Light Map/Light Probe來取代動態光源。
  14. 使用方向光。
  15. Pixel Light控制在1~2。
  16. 控制攝影機的z-near與z-far平面。
  17. 設定物件的Culling Distance。
  18. 小物件又很遠得時候就不要畫。
  19. 粒子系統將粒子總數控制在200以下。
  20. 粒子系統每個發射器發射粒子控制在50以下。
  21. 粒子的大小越小越好。
  22. 非常小的粒子去掉alpha channel。
  23. 不要開啟粒子的碰撞。
  24. 碰撞型別不要使用Mesh Collider。
  25. 減少使用Animation元件。
  26. 不縮放的動畫,去除Scale Curves的引數。
  27. 若只使用一個AnimationClip,就使用Unity 3.5的動畫系統。
  28. 使用Macanim(Unity 4的動畫系統),要搭配使用Body Mask。
  29. IK選用Generic Mode。Humanoid Mode在Android上會耗費嚴重的效能。
  30. Render時減少使用Alpha Test與Alpha Blend。
  31. Draw Call Batching分為Static與Dynamic。後者點數控制在900下,若包含Position,Normal,UV,則是300。
  32. 使用Texture Packing將不同物件的材質變為相同,但必須手動修改UV。
  33. 使用Occlusion Culling時謹慎設定謹慎設定Occluder(牆)與Occludee的角色。設定PVS only,PVS and dynamic objects,Automatic Portal Generation(會改變的門)。
  34. 程式碼,使用類別變數來暫存指標。
  35. 設定Fixed Delta Time在0.04到0.067之間。
  36. IOS發布時使用Fast and Exceptions Unsupported的發布形式。
  37. Shader減少使用數學函式,減少使用Discard。Vertex使用Float,TextureUV使用Half,顏色與光使用Fixed。
  38. 在PowerVR的硬體下有時候使用兩個Vec2反而會比較快。
  39. 使用Profiler。
  40. 使用Manager的架構來控制物件會比把每個物件都掛上指令碼效率高。

Asset Bundle

  1. Resource這種讀取資源的形態(有2G限制)會慢慢移除,統一改用Asset Bundle(可離線創造)
  2. Web Caching只能放Asset Bundle。
  3. Asset Bundle建出之後是有相容性的,ios與android的Asset Bundle與其他平臺互不相容。
  4. Asset Bundle的流程:
    WWW.LoadFromCacheOrDownload()取得AssetBundle->解壓縮->原來的Asset。
    var assetBundleObj = WWW.AssetBundle->使用中的Asset Bundle。
    new WWW是沒有Cache的,使用LoadFromCacheOrDownload()取得.unity3D才能有Cache。
    透過AssetBundle.CreateFromMemory()取得Asset Bundle可再進行加密動作。
    AssetBundle.Load()->載入Asset。
  5. 解除安裝流程:
    GameObject.Destroy()
    AssetBundle.Unload(false)只會解除安裝WWW.AssetBundle,AssetBundle.Unload(true)則會解除安裝WWW.AssetBundle以及相關資源。true的作用相較於使用false再使用Resources.UnloadUnusedAssets()作用並不相同。
    把相同的資源基底打包為Asset Bundle
    使用BuildPipeline.PushAssetDependencies()來建立Asset Bundle之間的關連性。
  6. 範例1:把共通資源打包。
    Push
    Build 共通資源包
    Push
    Build 物件包1
    Pop
    Push
    Build 物件包2
    Pop
    Pop
  7. 範例2:把Level所使用的資源也做成依賴形式。
    Push
    Build Level1
    Push
    Build Level2 (依賴於Level1)
    Push
    Build Level3 (依賴於Level2與Level2)
  8. 範例3:把場景包依賴於共通資源包
  9. 將設定各資源包依賴關係的XML設定為ScriptableObject並打包到Asset Bundle內
  10. 將場景切割為Asset Bundle的方式,等分,如切成九宮格。
  11. 將場景切割為Asset Bundle的方式,分大物件,中物件,小物件。讓大物件先讀入先顯示。
  12. WWW.LoadFromCacheOrDownload()可設定版號。
  13. WWW.LoadFromCacheOrDownload的crc產生方式可透過錯誤使用同一個函式來產生真確值。
  14. 程式碼的加密過程:Assembly->Byte->TextAsset->加密->Asset Bundle->加密->TextAsset->Asset Bundle。
  15. 使用native dll來保護重要程式碼,但Web應用不能使用dll。

Unity Shader System

  1. 透過Shader Name就會自動產生選擇Shader的架構。
  2. SubShader可視為真正的Shader,由上而下執行。
  3. SubShader的Tag表示如何執行:可指定執行的順序。
  4. SubShader的Tag表示如何表現。
  5. 著色方式Vertex Lit:快,限制多。
  6. 著色方式Forward:將燈光分為最重要+不重要以及其他重要。區分方式可手動,也可以依照強度與方向來自動決定。
  7. 著色方式Deferred:手機不能使用,也不支援透明。
  8. CG/HSSL會被轉譯為GLSL。
  9. 使用基本Shader會需要寫132行的程式,使用Surface Shader來做隱藏簡化:標明surfae code與light code。
  10. #pragma debug可以將隱藏的程式碼顯示在程式碼中。
  11. 透過user define keyword將引數傳入shader中。

相關推薦

必須知道的EF知識和經驗

部分 就是 serve 存在 效率 epo 命名空間 omap sql查詢 推薦MiniProfiler插件 數據準備 foreach循環的陷進 AutoMapper工具 聯表查詢統計 性能提升之AsNonUnicode 性能提升之AsNoTracking 多字段

2019秋招必須知道的前端知識

引言 又是一輪金九銀十的校招黃金期,藉此更新部分前端面試題,並提供詳解(答案不保證百分百正確,但我自信,可參考性還是很高的),希望對大家會有幫助^~^! 版本 v0.1:新增HTML相關面試筆試題 HTML篇 (2018-9-15 19:10) 1. 你做過的網站

必須知道Unity引擎知識

總論 開發者成長速度與上手速度是Unity在臺灣的優勢。在Facebook與360劉灠器中預設安裝Unity Plugin。大陸有超過400個Android商城。認證培訓(新竹教育大學,高應科大等學校)。鬼武者魂由Unity開發,Server端使用PHP。開發者必須要注意的三階段:開發-平臺-廣告金流。你不

Unity開發-必須知道的優化建議

instant material asp renderer setting .text 屏幕 格式 coord 轉載;http://blog.csdn.net/leonwei/article/details/18042603 最近研究U3D開發,個人認為,精通一種新

學習算法必須知道的一些基礎知識(文末福利)

深度學習 機器學習 算法 點擊標題下「異步社區」可快速關註機器學習是解決很多文本任務的基本工具,本文自然會花不少篇幅來介紹機器學習。要想搞明白什麽是機器學習,一定要知道一些概率論和信息論的基本知識,本文就簡單回顧一下這些知識。1.1 概率論概率就是描述一個事件發生的可能性。我們生活中絕大多數事件都

Scrum Master 面試題 – 必須知道的22個Scrum基礎知識

以下的22個問題基本上涵蓋了Scrum所涉及的內容,如果你能夠正確回答出所有問題,那麼你已經具備了作為一名Scrum Master的基本素質;當然,作為一名合格的Scrum Master,更重要的是你的經驗,因為Scrum Master更多的需要和人打交道,很多實際問題的處理方式是必須在實踐中才能體會的

關於編碼必須知道知識和技巧

> 知其然,知其所以然,徹底搞懂編碼,搞定亂碼 亂碼問題是所有運維職業生涯中都會遇到的問題,本篇文章帶你探究背後的原理以及解決的技巧 ## 字元編碼 我們知道計算機只認識二進位制資料,其他格式的資料都需要轉換成二進位制才能被計算機處理,也就是說我們在計算機上看到的文字、視訊、可執行程式等格式的檔案

必須知道的雲端計算知識(上)

最近訂閱學習了《深入淺出雲端計算》專欄,一口氣學完之後,做了一些總結筆記形成此文,特分享與你,希望對你有所幫助!本文為上半部分,主要總結了IaaS篇的核心要點。 零、開篇詞 1、開發者為何要學習雲端計算?   (1)歷經多年發展已成熟併成為一種潮流,企業數字化轉型的組成部分。   (2)產業的發展必然影響

必須知道的雲端計算知識(下)

最近訂閱學習了《深入淺出雲端計算》專欄,一口氣學完之後,做了一些總結筆記形成此文,特分享與你,希望對你有所幫助!本文為下半部分,主要總結了PaaS篇的核心要點。 一、PaaS篇 1、正確評估和理解PaaS   PaaS的核心概念是Platform-as-a-Service,即雲端計算提供的平臺類服務。它是

必須知道的Java基礎知識

![](https://img2020.cnblogs.com/blog/1775037/202009/1775037-20200905103857971-998837168.png) 本篇部落格主要記錄Java中面向物件的概念和Java語法的基礎知識。 ## 面向物件 ### 什麼是面向物件 面向物

C#刨根究底:《必須知道的.NET》讀書筆記系列

wid 最終 table bsp 圖解 萬能 展望 應用 light 一、此書到底何方神聖?   《你必須知道的.NET》來自於微軟MVP—王濤(網名:AnyTao,博客園大牛之一,其博客地址為:http://anytao.cnblogs.com/)的最新技術心得和感悟,

必須知道的.NET》讀書筆記一:小OO有大智慧

實現 職責 可靠性 基本 code cfile 生存 最好 min() 此篇已收錄至《你必須知道的.Net》讀書筆記目錄貼,點擊訪問該目錄可以獲取更多內容。 一、對象   (1)出生:系統首先會在內存中分配一定的存儲空間,然後初始化其附加成員,調用構造函數執行初始化,這

必須知道的改變中國人工智能命運的20個人

.com 翻譯 智能 團隊 自己 世界 榜單 中心 我們 近日,福布斯發表一篇名為《20個推動人工智能改革的科技領導者》的署名文章,介紹了中國頂尖科技公司中的20位致力於人工智能的重要人物,並認為在人工智能領域中國正在挑戰美國的領導地位。在福布斯列出的20位重要人物中,有1

為什麽要開展等級保護測評?必須知道

等保測評 隨著我國信息技術的快速發展,為維護國家安全和社會穩定,維護信息網絡安全,國務院於1994年頒布了《中華人民共和國計算機信息系統安全保護條例》(國務院147號令)。條例中規定:我國的“計算機信息系統實行安全等級保護。 2003年**辦公廳、國務院辦公廳轉發的《國家信息化領導

【微服務幹貨系列】使用微服務架構之前,必須知道

ces pop 負載 average led dsm 部署 通用 works 正如敏捷之父MartinFowler所說的那樣,單體架構和微服務並非簡單的二選一,兩者都是模糊的定義。這就意味著大多數系統都將在一個模糊的邊界區域。非常多開發團隊已經認識到微服務架構比

HTML5必須知道的28個新特性

html5你必須知道的28個新特性HTML5有很多的新功能.新代碼.非常不錯.現在總結一下.僅供參考1. 新的Doctype盡管使用<!DOCTYPE html>,即使瀏覽器不懂這句話也會按照標準模式去渲染2. Figure元素 用<figure>和<figcaption>

【火的不行的前端必須知道】一、淺談node.js

images 事件驅動 webp bsp 打包 前端框架 公司 org 詳細分析 引子: 現在都2017年了,在這個前端盛行的年頭,在不懂一些前端流行的技術就落伍了,恰好公司H5端項目也是讓這個方向去替換。 技術選型:   這裏主要是簡單說一下,後面會分章節詳細分

關於建站必須知道的六個常識

fun 分享圖片 選擇 不能 軟件 索引 轉化率 網民 aid 你以為搭建好網站就可以高枕無憂了嗎?其實不是。建站就和養花是一樣的模式,是需要精心地去維護,才能夠得到想要的效果。 如果建設好網站之後不管不顧,那麽這個網站就是一個死站,產生不了一絲一毫的效益,就變得毫無存在的

大數據開發如何入門必須知道這些

oop 小學生 影響 正在 大數據學習 ado src 初學 發的 大數據開發如何入門你必須知道這些 昨天和三個學計算機專業的學生聊天時聊到了大數據開發方面的話題,他們三個人中,有兩個已經進入企業開始工作,另外一個還是大二學生,但已經開設了自己的工作室。他們都是從事程序開發

大資料工作中必須知道的基礎命令集錦

以下是個人在工作中總結的一些簡單的命令,有linux也有hadoop叢集命令的操作,精力有限,肯定還有很多命令沒有總結到,歡迎留言,我會定期新增新的內容 檢視當前目錄是什麼命令?怎麼表示當前path pwd ./ 切換到上一次和上一層目錄?切換到當前使用者的目錄。 c