国产高清网站_亚洲一区二区综合_成人久久18免费网站_国产成人久久精品激情

您現在所在的位置:首頁 >關于奇酷 > 行業動態 > Unity3D培訓:MMORPG游戲優化經驗分享(一)

Unity3D培訓:MMORPG游戲優化經驗分享(一)

來源:奇酷教育 發表于:

奇酷教育-unity3D培訓_unity3D游戲_unity3D教程

  Unity3D培訓:MMORPG游戲在優化Unity3d游戲時,我們一般從四個方面:CPU、GPU、內存、工程配置等入手,它們都可能是影響游戲性能瓶頸的關鍵。
  unity3d游戲教程:CPU
  我們平常游戲的很多性能瓶頸都在CPU。例如:MONO內存分配帶來CPU開銷,當Mono內存從50M、60M、70M,一直增大到100M,這些內存分配都相當于CPU的開銷。當在Update函數中存在比較復雜的邏輯時,很容易出現每一幀都觸發內存分配,如圖01所示。
Unity3D培訓:MMORPG游戲優化經驗分享(一)
  雖然截圖中一幀里的GC Alloc只有0.6KB,但是當游戲運行很長時間后,累計數量是相當高的,這就讓每一幀都存在GC Alloc帶來的CPU開銷。
  處理客戶端與服務器通信的數據包時,會存在序列化與反序列化,如果實現方式不合理時,會帶來多余的內存分配。一般很多項目都現在使用Protobuff,如果是自行設計的數據包格式,就要考慮如何控制序列化與反序列化的內存分配。
  靜態數據表如果使用Json、xml等格式時,同時解析邏輯與數據結構設計不良,在初始化數據表時容易由于過大的內存分配而撐大MONO堆內存。所以要在項目設計時找到最優化的方式來實現功能需求與性能需求。
  String是一個很常用的引用類型對象。當代碼里存在字符串拼接、直接或間接調用ToString()函數時,會生成字符串的副本,也就產生了內存分配。例如:調用Object.name屬性,即使每次返回值是固定的,依然是不同的String對象,因為這里每次返回都是一個對象拷貝。所以建議可以通過把這類字符串預先緩存,或者在打包時生成一個名字的列表作為靜態數據,提供給運行時的邏輯直接讀取。
  部分Unity內置API在被調用時,都是返回對象拷貝。例如:Getcomponents、Sprite.Vertices、Input.Touches等。從設計角度是考慮代碼安全性,防止外部直接去修改真正的對象數據。所以,這些屬性返回值要做緩存。或者通過其他API來實現需求從而規避掉這個問題。請注意,Getcomponent只會在編輯器環境下存在內存開銷,真機上不存在,大家在Profiling時不要被誤導。
  通常Debug.Log一類的日志函數應該只存在Debug階段,但是很多時候這些函數沒有屏蔽。如果它們出現在調用次數較多的邏輯中,就帶來額外的CPU開銷。同樣Warning和Log存在相同的情況。雖然日常在console或真機Log里常見,但是經常沒有被處理。建議對待Warning也要找到它的觸發原因并解決,防止在Release中出現。Log函數不會因為打包為release版本就會自動屏蔽,需要使用宏定義來屏蔽。
  閉包與匿名函數盡可能不要使用。閉包中調用外部變量,需要創建一個臨時class對象來包含外部變量并且傳給閉包函數,從而帶來內存開銷。匿名函數在作為一個函數的參數傳入時,也存在內存分配。il2cpp中如果使用匿名函數當參數,不要用預聲明的函數。
  ParticleSystem API在Unity 2017.2之前的版本中,Stop和Simulate內部實現使用了閉包。粒子系統的一些API,例如:Start、Stop、Pause、Clear、Simulate在調用它們時會遞歸調用當前粒子節點下面的所有子級節點,并會觸發GetComponent,這帶來了一定的CPU開銷。如果需要調這幾個方法的時候,函數參數withChildren可以設為false,不觸發遍歷子節點。在粒子對象初始化時,預存子節點,在需要時直接根據緩存的子節點列表分別調用它們的Start。
  Camera.main的調用是存在開銷的,可以把Object.FindObjectWithTag(“MainCamera”)緩存下來來代替。調用射線檢測函數時應該使用那些不存在開銷的函數,例如Physics.RaycastNonAlloc。
  當Canvas重建時,會引起材質的重新創建、排序、Mesh重建,這都會帶來CPU的開銷。當Canvas內容非常復雜的時候,每次重建很可能會帶來比較明顯的卡頓。UGUI里面的Mask會使用StencilBuffer,蒙版內的元素是沒法和外面的元素做合批,即便在圖集與材質都是相同的。這時可以用RectMask2D來實現蒙版,可以稍微降低一些開銷。Canvas上的GraphicRaycaster選項,在不需要有交互時可以不勾選。而Layout組件會涉及到節點的遍歷操作,都有內存與CPU的開銷,如果能不用就不用它,或者自行硬編碼實現簡單的自動布局。
  Canvas都建議做動靜分離,頻繁改動的元素和固定不變的元素分開到不同的Canvas。需要注意Canvas數量,數量多少根據UI的復雜程度、動靜分離的Canvas個數進行測試,評估多少個Canvas是合理的。目前發現Unity2017.3中,出現過當Canvas數量達到十幾個或更多時,帶來的開銷反而比不分拆時還大。
  UI元素存在半透并很多元素進行疊加,就導致OverDraw消耗比較大。可以通過減少疊加層數、縮小Sprite的空白區域等方式來控制。
  當Canvas 處于Worldspace或者Screen Space時,Canvas存在Event Camera或者Render Camera屬性,需要掛接Camera。此處若為None,運行時每幀都會有十幾次訪問它,底層默認返回Camera.main。所以預先關聯Camera對象。
  圖集的分類方式直接影響到UI的合批效率。除了幾個通用圖集外,其它圖集按UI模塊類型區分,一個或多個UI公用一套圖集。圖集的面積利用率要做到最高,避免圖集存在太多空白區域。而圖標是分散還是合并到圖集上,要看項目實際情況,并沒有固定的規則。
  UI背景圖不要出現NPOT尺寸,如果要用NPOT,嘗試多個NPOT圖合并為POT尺寸,或者美術對NPOT圖拉伸為POT,在Unity中還原為原始尺寸。
  通常靜態合批通過給場景上的物體勾上Static實現,但是有時會因為導致包體太大,改為運行時調用staticBatchingUtility.Combine進行物件合并。但是運行時手動靜態合批會有不小的CPU開銷,同時Mesh可讀寫選項也開啟,在內存中邊存在雙份的Mesh數據,同時合并后模型也是一份新Mesh數據。建議可以用第三方插件Mesh Baker來進行靜態合批。同時,各個模型的材質也要針對靜態合批來制作,畢竟相同材質的模型才可以合并。
  動態合批對于大部分有Lightmap的模型是無效的,還存在900左右頂點的合批限制。在Unity 2017.3支持32bit Mesh index buffers,可以合并Mesh時支持更多的頂點,可以在FBX選項內Index Format打開或者運行時設置Mesh.indexFormat。
  骨骼蒙皮計算一般使用CPU Skinning,雖然引擎也是支持GPU skinning的,但需要注意性能瓶頸在CPU端還是GPU端。如果GPU端是性能瓶頸時,盲目打開GPU skinning,會變成一種負優化。當角色模型的骨骼數超過100根、150根時,某些身體部位的骨骼動畫,可以用BlendShapes代替。當某一部位骨骼動畫不播放時,可以把這個部位的Animator組件關掉。Animation Instancing也是一個可以優化大量角色動畫性能的手段。
  物理系統中,MeshCollider的使用在場景比較復雜龐大時,Bake的性能比較差。可以通過配合射線檢測和自定義高度圖數據控制角色高度。
  以上就是奇酷為大家分享的“Unity3D培訓:MMORPG游戲”謝謝大家觀看,如果對unity3D感興趣的話,想學unity3D培訓的,也可以在線咨詢,我們將竭誠為你解答。
国产高清网站_亚洲一区二区综合_成人久久18免费网站_国产成人久久精品激情

    <sup id="ys8cw"><kbd id="ys8cw"></kbd></sup>

    <sup id="ys8cw"><font id="ys8cw"><output id="ys8cw"></output></font></sup>

    91在线观看美女| 国产一区二区免费视频| 国产精品一品视频| 欧美性三三影院| 欧美激情在线看| 日本少妇一区二区| 色综合天天综合色综合av| www国产成人| 图片区小说区区亚洲影院| 国产乱码精品一区二区三区忘忧草 | 夜夜精品浪潮av一区二区三区| 久久国产视频网| 欧美日韩精品欧美日韩精品| 国产精品私房写真福利视频| 精品一区二区三区免费播放| 欧美日韩中文精品| 日韩理论在线观看| 国产精品18久久久久久久久久久久 | 五月激情综合网| 91欧美一区二区| 国产女人aaa级久久久级 | 亚洲午夜精品久久久久久久久| 国产传媒日韩欧美成人| 国产亲近乱来精品视频| 亚洲曰韩产成在线| 国产精品77777| xnxx国产精品| 久久精品国产一区二区三| 精品1区2区3区| 一区二区三区在线播放| 成人国产精品免费观看视频| 亚洲美女电影在线| 国产精品亚洲一区二区三区妖精| 麻豆精品久久久| 懂色av中文一区二区三区| 精品剧情v国产在线观看在线| 亚洲午夜久久久久久久久电影院| 91丨porny丨中文| 中文字幕在线不卡一区| av在线播放一区二区三区| 中文无字幕一区二区三区| 国产精品18久久久久| 久久久777精品电影网影网| 国产麻豆精品95视频| 久久婷婷成人综合色| 精品一区二区三区在线播放视频| 欧美xxxx在线观看| 国产做a爰片久久毛片| 欧美精品一区二区在线播放 | 91麻豆精品国产无毒不卡在线观看| 亚洲黄色录像片| 欧日韩精品视频| 亚洲国产精品一区二区久久| 欧美日韩综合色| 日韩国产精品久久| 日韩美女视频一区二区在线观看| 美日韩一区二区| 欧美成人三级在线| 国产精品亚洲第一区在线暖暖韩国| 久久久久国产精品麻豆| 国产精品亚洲一区二区三区妖精| 国产欧美一区二区三区在线看蜜臀| 国产成人欧美日韩在线电影| 国产精品久久夜| 91在线porny国产在线看| 一区二区三区自拍| 欧美日韩夫妻久久| 久久不见久久见免费视频1| 久久精品免费在线观看| a级精品国产片在线观看| 一区二区三区产品免费精品久久75| 欧美自拍偷拍一区| 美女任你摸久久 | 欧美影院午夜播放| 日韩福利视频导航| 久久一二三国产| av男人天堂一区| 亚洲成av人在线观看| 日韩视频一区二区| 国产91高潮流白浆在线麻豆| 亚洲美女屁股眼交| 日韩欧美中文字幕一区| 国产91精品久久久久久久网曝门 | 26uuu精品一区二区在线观看| 国产一区二区日韩精品| 日韩美女视频一区二区| 91精品国产综合久久婷婷香蕉| 国产精品2024| 亚洲国产日韩在线一区模特| www欧美成人18+| 色哦色哦哦色天天综合| 免费观看久久久4p| 国产精品久久毛片av大全日韩| 欧美日精品一区视频| 国产精品一区二区男女羞羞无遮挡| 亚洲视频资源在线| 日韩欧美成人午夜| 91在线视频观看| 久热成人在线视频| 日韩理论在线观看| 精品少妇一区二区三区在线播放| 99久久精品免费精品国产| 日韩成人精品视频| 亚洲欧洲一区二区在线播放| 欧美一区二区大片| 91麻豆自制传媒国产之光| 捆绑紧缚一区二区三区视频 | 久久人人超碰精品| 欧美色综合网站| 成人午夜看片网址| 青青草成人在线观看| 亚洲免费观看在线观看| 亚洲精品一区二区三区蜜桃下载 | 成人精品一区二区三区四区| 日韩和的一区二区| 亚洲欧洲综合另类| 久久毛片高清国产| 7777精品伊人久久久大香线蕉的 | 亚洲日韩欧美一区二区在线| 欧美成人乱码一区二区三区| 91麻豆swag| 国产成人精品免费一区二区| 日韩黄色免费电影| 一区二区三区四区不卡在线 | 中文字幕av一区二区三区高| 欧美一区二区三区啪啪| 91成人在线观看喷潮| 成人黄色综合网站| 国产一区视频导航| 免费看日韩a级影片| 亚洲在线视频一区| 亚洲天堂网中文字| 亚洲国产成人自拍| 2020国产成人综合网| 91精品国产入口| 欧美日韩国产片| 91国内精品野花午夜精品| 成人中文字幕在线| 国产综合色产在线精品| 日韩国产成人精品| 婷婷激情综合网| 亚洲在线中文字幕| 亚洲桃色在线一区| 国产精品区一区二区三| 久久久电影一区二区三区| 精品福利av导航| 亚洲精品在线免费观看视频| 日韩片之四级片| 日韩欧美亚洲另类制服综合在线| 欧美精品久久久久久久多人混战| 在线观看日韩高清av| 91国模大尺度私拍在线视频| 91麻豆国产精品久久| 9l国产精品久久久久麻豆| 成人avav影音| k8久久久一区二区三区| av午夜精品一区二区三区| 成年人午夜久久久| 99久久免费视频.com| www.性欧美| 91免费观看国产| 日本高清不卡在线观看| 在线观看中文字幕不卡| 在线观看一区日韩| 欧美日韩精品一区二区三区四区| 欧美日免费三级在线| 制服丝袜av成人在线看| 日韩无一区二区| 欧美成人a视频| 国产亚洲精品超碰| 国产精品精品国产色婷婷| 亚洲色图视频网| 亚洲成va人在线观看| 免费欧美在线视频| 国产精品69久久久久水密桃| jvid福利写真一区二区三区| 色综合久久久久综合体| 欧美三级中文字| 日韩精品中文字幕一区| 国产人伦精品一区二区| 国产精品国产成人国产三级| 亚洲精品写真福利| 亚洲成年人网站在线观看| 日本午夜一区二区| 国产成人免费视频一区| www.成人网.com| 欧美视频一区二| 精品区一区二区| 中文字幕一区二区5566日韩| 亚洲线精品一区二区三区八戒| 日韩av不卡在线观看| 国产高清精品网站| 在线区一区二视频| 日韩你懂的在线观看| 亚洲国产电影在线观看| 亚洲国产欧美在线人成| 黄色成人免费在线| 一本一道久久a久久精品综合蜜臀| 制服丝袜一区二区三区| 久久久www成人免费毛片麻豆 |