97**国产露脸精品国产,国内精品免费一区二区三区,国产精品久久久久久久久妇女,国内一区二区三区精品视频

您現在所在的位置:首頁 >關于奇酷 > 行業動態 > 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培訓的,也可以在線咨詢,我們將竭誠為你解答。
97**国产露脸精品国产,国内精品免费一区二区三区,国产精品久久久久久久久妇女,国内一区二区三区精品视频
一二三区视频在线观看| 激情五月激情综合| 老熟妻内射精品一区| 91成人在线免费视频| 99久久久久久久久久| 李宗瑞91在线正在播放| 亚洲欧美va天堂人熟伦| 级毛片内射视频| 女教师淫辱の教室蜜臀av软件| 亚洲性猛交xxxx乱大交| 一本在线免费视频| 丰满人妻一区二区三区53视频| 日本黄色www| 中国特级黄色大片| 色综合99久久久无码国产精品| 成人欧美一区二区三区黑人一| 最新一区二区三区| 成人在线电影网站| 欧美福利第一页| 无码人妻少妇色欲av一区二区| 在线精品视频播放| 操她视频在线观看| 午夜剧场免费看| 亚洲 欧美 国产 另类| 久久人妻少妇嫩草av蜜桃| 欧美黑人欧美精品刺激| 日本免费网站视频| 波多野结衣先锋影音| 成年人看的免费视频| 国产一级免费片| 免费在线观看黄色小视频| 日本黄色特级片| ass极品水嫩小美女ass| 夫妇露脸对白88av| 久久久久成人精品无码中文字幕| 中文字幕欧美激情极品| 超碰97在线资源站| 一级黄色大片免费看| 粉嫩精品久久99综合一区| 小毛片在线观看| 乱码一区二区三区| 538精品在线观看| 天堂资源在线视频| 国产毛片欧美毛片久久久| 日本黄色动态图| 国产精品熟妇一区二区三区四区| 中文字幕成人动漫| 久久一区二区电影| 亚洲视频在线播放免费| 好吊操视频这里只有精品| 亚洲色图日韩精品| 国产精品成人无码免费| 丰满圆润老女人hd| 四虎影成人精品a片| 国产吞精囗交久久久| 亚洲 欧美 日韩在线| 日本少妇一级片| 日本一级大毛片a一| 精人妻一区二区三区| 中文字幕视频观看| xxxwww国产| 久久无码人妻精品一区二区三区| 久久性爱视频网站| 无码任你躁久久久久久老妇| 人妻丰满熟妇aⅴ无码| 亚洲国产精品无码久久久久高潮 | 91成人在线免费视频| 少妇人妻好深好紧精品无码| 久久日免费视频| 天堂av免费在线| 日本r级电影在线观看| 国产精品精品软件男同| 欧美亚洲日本在线| 中文字幕精品视频在线| 欧美做受高潮6| 九色91porny| 青青草福利视频| 亚洲视频重口味| 麻豆免费在线观看视频| 新91视频在线观看| 久久国产美女视频| 中文字幕5566| 国产盗摄x88av| 在线免费观看日韩av| 日韩女优一区二区| 成年人免费观看视频网站| 国产免费一区二区三区四区| 亚洲成年人av| 亚洲av无码一区二区三区在线| 男男一级淫片免费播放| 国产精品18在线| 丰满岳乱妇一区二区| 日韩在线一卡二卡| 免费人成又黄又爽又色| 成人三级做爰av| 亚洲av无一区二区三区| 中文字幕乱码一区| 久久免费看少妇高潮v片特黄| 一女三黑人理论片在线| 欧美人与性动交α欧美精品| 九九九视频在线观看| 爱爱免费小视频| 精品中文字幕在线播放| 无码人妻丰满熟妇区毛片蜜桃精品| 国产调教在线观看| 欧美黑人欧美精品刺激| 久久久久国产精品区片区无码| 国产精品九九九九九九| 欧美色图17p| 国产福利在线导航| 亚洲一二三精品| 中文字幕免费在线看线人动作大片| 人妻无码中文久久久久专区| 波多野吉衣在线视频| 亚洲色婷婷一区二区三区| www.超碰在线观看| 黄色av片三级三级三级免费看| 中文字幕伦理片| 国产91丝袜美女在线播放| 免费观看av网站| 日韩av片在线| 99热这里只有精品4| 国产小视频你懂的| 91人妻一区二区三区| 天天干中文字幕| 精品国产av色一区二区深夜久久| 久久久久亚洲AV成人无码国产| 免费的av网站| 美国黑人一级大黄| 亚洲女人久久久| 精品人妻伦一二三区久| 日本黄色特级片| 亚洲区一区二区三| 91精产国品一二三| 国产偷人妻精品一区| 国产精品情侣呻吟对白视频| 国产日产精品一区二区三区的介绍| jizz亚洲少妇| 丰满大乳奶做爰ⅹxx视频| 91成人在线免费视频| 唐朝av高清盛宴| 亚洲国产天堂av| 欧美日韩一区二区区| 亚洲第九十七页| 视频国产一区二区| 日韩一级视频在线观看| 精品视频第一页| 人妻体内射精一区二区| 唐朝av高清盛宴| 你懂得视频在线观看| 成人免费看片载| 国产黄在线免费观看| 搡老熟女老女人一区二区| 希岛爱理中文字幕| 97伦伦午夜电影理伦片| 韩国黄色一级片| 国产无遮挡在线观看| 中文字幕丰满孑伦无码专区| 全程偷拍露脸中年夫妇| 国产精品无码久久久久一区二区| 亚洲丝袜在线观看| 日本二区三区视频| 东方伊人免费在线观看| 加勒比精品视频| 国产午夜在线一区二区三区| 国产av无码专区亚洲av毛网站| 日韩中文字幕电影| 国产精品1000部啪视频| 韩国三级hd中文字幕有哪些| 亚洲色图日韩精品| 精品无码国产污污污免费网站| 黄色av网址在线观看| 免费黄视频在线观看| 黄色香蕉视频在线观看| 蜜桃av免费观看| 欧美性生给视频| 粉嫩av性色av蜜臀av网站| 三级黄色片在线观看| 5566中文字幕| 一区二区三区四区五区| 激情五月激情综合| 男女性高潮免费网站| 26uuu国产| 亚洲自拍偷拍精品| 亚洲调教欧美在线| 日本xxxxxxxxx18| 男人的午夜天堂| 免费成年人视频在线观看| 日本wwww色| 亚洲av永久无码精品| 日本黄色网址大全| 一级片手机在线观看| 国产精品18在线| 免费黄色av网址| 中文字幕人妻一区二区| 东京热无码av男人的天堂| 久久久精品视频免费观看| 2一3sex性hd| 日韩国产第一页| 午夜av免费看|