精品久久久久久久久久久院品网_男女男精品视频_日韩**一区毛片_在线免费不卡电影_亚洲少妇屁股交4_久久国内精品视频_日韩一区二区三免费高清_亚洲成人手机在线_91看片淫黄大片一级在线观看_中文字幕亚洲在_日本一区二区在线不卡_欧美酷刑日本凌虐凌虐_理论电影国产精品_国产精品视频yy9299一区_99久久精品免费观看_国产精品久久三

您現(xiàn)在所在的位置:首頁(yè) >關(guān)于奇酷 > 行業(yè)動(dòng)態(tài) > Unity3D培訓(xùn):MMORPG游戲優(yōu)化經(jīng)驗(yàn)分享(一)

Unity3D培訓(xùn):MMORPG游戲優(yōu)化經(jīng)驗(yàn)分享(一)

來(lái)源:奇酷教育 發(fā)表于:

奇酷教育-unity3D培訓(xùn)_unity3D游戲_unity3D教程

  Unity3D培訓(xùn):MMORPG游戲在優(yōu)化Unity3d游戲時(shí),我們一般從四個(gè)方面:CPU、GPU、內(nèi)存、工程配置等入手,它們都可能是影響游戲性能瓶頸的關(guān)鍵。
  unity3d游戲教程:CPU
  我們平常游戲的很多性能瓶頸都在CPU。例如:MONO內(nèi)存分配帶來(lái)CPU開(kāi)銷,當(dāng)Mono內(nèi)存從50M、60M、70M,一直增大到100M,這些內(nèi)存分配都相當(dāng)于CPU的開(kāi)銷。當(dāng)在Update函數(shù)中存在比較復(fù)雜的邏輯時(shí),很容易出現(xiàn)每一幀都觸發(fā)內(nèi)存分配,如圖01所示。
Unity3D培訓(xùn):MMORPG游戲優(yōu)化經(jīng)驗(yàn)分享(一)
  雖然截圖中一幀里的GC Alloc只有0.6KB,但是當(dāng)游戲運(yùn)行很長(zhǎng)時(shí)間后,累計(jì)數(shù)量是相當(dāng)高的,這就讓每一幀都存在GC Alloc帶來(lái)的CPU開(kāi)銷。
  處理客戶端與服務(wù)器通信的數(shù)據(jù)包時(shí),會(huì)存在序列化與反序列化,如果實(shí)現(xiàn)方式不合理時(shí),會(huì)帶來(lái)多余的內(nèi)存分配。一般很多項(xiàng)目都現(xiàn)在使用Protobuff,如果是自行設(shè)計(jì)的數(shù)據(jù)包格式,就要考慮如何控制序列化與反序列化的內(nèi)存分配。
  靜態(tài)數(shù)據(jù)表如果使用Json、xml等格式時(shí),同時(shí)解析邏輯與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)不良,在初始化數(shù)據(jù)表時(shí)容易由于過(guò)大的內(nèi)存分配而撐大MONO堆內(nèi)存。所以要在項(xiàng)目設(shè)計(jì)時(shí)找到最優(yōu)化的方式來(lái)實(shí)現(xiàn)功能需求與性能需求。
  String是一個(gè)很常用的引用類型對(duì)象。當(dāng)代碼里存在字符串拼接、直接或間接調(diào)用ToString()函數(shù)時(shí),會(huì)生成字符串的副本,也就產(chǎn)生了內(nèi)存分配。例如:調(diào)用Object.name屬性,即使每次返回值是固定的,依然是不同的String對(duì)象,因?yàn)檫@里每次返回都是一個(gè)對(duì)象拷貝。所以建議可以通過(guò)把這類字符串預(yù)先緩存,或者在打包時(shí)生成一個(gè)名字的列表作為靜態(tài)數(shù)據(jù),提供給運(yùn)行時(shí)的邏輯直接讀取。
  部分Unity內(nèi)置API在被調(diào)用時(shí),都是返回對(duì)象拷貝。例如:Getcomponents、Sprite.Vertices、Input.Touches等。從設(shè)計(jì)角度是考慮代碼安全性,防止外部直接去修改真正的對(duì)象數(shù)據(jù)。所以,這些屬性返回值要做緩存?;蛘咄ㄟ^(guò)其他API來(lái)實(shí)現(xiàn)需求從而規(guī)避掉這個(gè)問(wèn)題。請(qǐng)注意,Getcomponent只會(huì)在編輯器環(huán)境下存在內(nèi)存開(kāi)銷,真機(jī)上不存在,大家在Profiling時(shí)不要被誤導(dǎo)。
  通常Debug.Log一類的日志函數(shù)應(yīng)該只存在Debug階段,但是很多時(shí)候這些函數(shù)沒(méi)有屏蔽。如果它們出現(xiàn)在調(diào)用次數(shù)較多的邏輯中,就帶來(lái)額外的CPU開(kāi)銷。同樣Warning和Log存在相同的情況。雖然日常在console或真機(jī)Log里常見(jiàn),但是經(jīng)常沒(méi)有被處理。建議對(duì)待Warning也要找到它的觸發(fā)原因并解決,防止在Release中出現(xiàn)。Log函數(shù)不會(huì)因?yàn)榇虬鼮閞elease版本就會(huì)自動(dòng)屏蔽,需要使用宏定義來(lái)屏蔽。
  閉包與匿名函數(shù)盡可能不要使用。閉包中調(diào)用外部變量,需要?jiǎng)?chuàng)建一個(gè)臨時(shí)class對(duì)象來(lái)包含外部變量并且傳給閉包函數(shù),從而帶來(lái)內(nèi)存開(kāi)銷。匿名函數(shù)在作為一個(gè)函數(shù)的參數(shù)傳入時(shí),也存在內(nèi)存分配。il2cpp中如果使用匿名函數(shù)當(dāng)參數(shù),不要用預(yù)聲明的函數(shù)。
  ParticleSystem API在Unity 2017.2之前的版本中,Stop和Simulate內(nèi)部實(shí)現(xiàn)使用了閉包。粒子系統(tǒng)的一些API,例如:Start、Stop、Pause、Clear、Simulate在調(diào)用它們時(shí)會(huì)遞歸調(diào)用當(dāng)前粒子節(jié)點(diǎn)下面的所有子級(jí)節(jié)點(diǎn),并會(huì)觸發(fā)GetComponent,這帶來(lái)了一定的CPU開(kāi)銷。如果需要調(diào)這幾個(gè)方法的時(shí)候,函數(shù)參數(shù)withChildren可以設(shè)為false,不觸發(fā)遍歷子節(jié)點(diǎn)。在粒子對(duì)象初始化時(shí),預(yù)存子節(jié)點(diǎn),在需要時(shí)直接根據(jù)緩存的子節(jié)點(diǎn)列表分別調(diào)用它們的Start。
  Camera.main的調(diào)用是存在開(kāi)銷的,可以把Object.FindObjectWithTag(“MainCamera”)緩存下來(lái)來(lái)代替。調(diào)用射線檢測(cè)函數(shù)時(shí)應(yīng)該使用那些不存在開(kāi)銷的函數(shù),例如Physics.RaycastNonAlloc。
  當(dāng)Canvas重建時(shí),會(huì)引起材質(zhì)的重新創(chuàng)建、排序、Mesh重建,這都會(huì)帶來(lái)CPU的開(kāi)銷。當(dāng)Canvas內(nèi)容非常復(fù)雜的時(shí)候,每次重建很可能會(huì)帶來(lái)比較明顯的卡頓。UGUI里面的Mask會(huì)使用StencilBuffer,蒙版內(nèi)的元素是沒(méi)法和外面的元素做合批,即便在圖集與材質(zhì)都是相同的。這時(shí)可以用RectMask2D來(lái)實(shí)現(xiàn)蒙版,可以稍微降低一些開(kāi)銷。Canvas上的GraphicRaycaster選項(xiàng),在不需要有交互時(shí)可以不勾選。而Layout組件會(huì)涉及到節(jié)點(diǎn)的遍歷操作,都有內(nèi)存與CPU的開(kāi)銷,如果能不用就不用它,或者自行硬編碼實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)布局。
  Canvas都建議做動(dòng)靜分離,頻繁改動(dòng)的元素和固定不變的元素分開(kāi)到不同的Canvas。需要注意Canvas數(shù)量,數(shù)量多少根據(jù)UI的復(fù)雜程度、動(dòng)靜分離的Canvas個(gè)數(shù)進(jìn)行測(cè)試,評(píng)估多少個(gè)Canvas是合理的。目前發(fā)現(xiàn)Unity2017.3中,出現(xiàn)過(guò)當(dāng)Canvas數(shù)量達(dá)到十幾個(gè)或更多時(shí),帶來(lái)的開(kāi)銷反而比不分拆時(shí)還大。
  UI元素存在半透并很多元素進(jìn)行疊加,就導(dǎo)致OverDraw消耗比較大??梢酝ㄟ^(guò)減少疊加層數(shù)、縮小Sprite的空白區(qū)域等方式來(lái)控制。
  當(dāng)Canvas 處于Worldspace或者Screen Space時(shí),Canvas存在Event Camera或者Render Camera屬性,需要掛接Camera。此處若為None,運(yùn)行時(shí)每幀都會(huì)有十幾次訪問(wèn)它,底層默認(rèn)返回Camera.main。所以預(yù)先關(guān)聯(lián)Camera對(duì)象。
  圖集的分類方式直接影響到UI的合批效率。除了幾個(gè)通用圖集外,其它圖集按UI模塊類型區(qū)分,一個(gè)或多個(gè)UI公用一套圖集。圖集的面積利用率要做到最高,避免圖集存在太多空白區(qū)域。而圖標(biāo)是分散還是合并到圖集上,要看項(xiàng)目實(shí)際情況,并沒(méi)有固定的規(guī)則。
  UI背景圖不要出現(xiàn)NPOT尺寸,如果要用NPOT,嘗試多個(gè)NPOT圖合并為POT尺寸,或者美術(shù)對(duì)NPOT圖拉伸為POT,在Unity中還原為原始尺寸。
  通常靜態(tài)合批通過(guò)給場(chǎng)景上的物體勾上Static實(shí)現(xiàn),但是有時(shí)會(huì)因?yàn)閷?dǎo)致包體太大,改為運(yùn)行時(shí)調(diào)用staticBatchingUtility.Combine進(jìn)行物件合并。但是運(yùn)行時(shí)手動(dòng)靜態(tài)合批會(huì)有不小的CPU開(kāi)銷,同時(shí)Mesh可讀寫(xiě)選項(xiàng)也開(kāi)啟,在內(nèi)存中邊存在雙份的Mesh數(shù)據(jù),同時(shí)合并后模型也是一份新Mesh數(shù)據(jù)。建議可以用第三方插件Mesh Baker來(lái)進(jìn)行靜態(tài)合批。同時(shí),各個(gè)模型的材質(zhì)也要針對(duì)靜態(tài)合批來(lái)制作,畢竟相同材質(zhì)的模型才可以合并。
  動(dòng)態(tài)合批對(duì)于大部分有Lightmap的模型是無(wú)效的,還存在900左右頂點(diǎn)的合批限制。在Unity 2017.3支持32bit Mesh index buffers,可以合并Mesh時(shí)支持更多的頂點(diǎn),可以在FBX選項(xiàng)內(nèi)Index Format打開(kāi)或者運(yùn)行時(shí)設(shè)置Mesh.indexFormat。
  骨骼蒙皮計(jì)算一般使用CPU Skinning,雖然引擎也是支持GPU skinning的,但需要注意性能瓶頸在CPU端還是GPU端。如果GPU端是性能瓶頸時(shí),盲目打開(kāi)GPU skinning,會(huì)變成一種負(fù)優(yōu)化。當(dāng)角色模型的骨骼數(shù)超過(guò)100根、150根時(shí),某些身體部位的骨骼動(dòng)畫(huà),可以用BlendShapes代替。當(dāng)某一部位骨骼動(dòng)畫(huà)不播放時(shí),可以把這個(gè)部位的Animator組件關(guān)掉。Animation Instancing也是一個(gè)可以優(yōu)化大量角色動(dòng)畫(huà)性能的手段。
  物理系統(tǒng)中,MeshCollider的使用在場(chǎng)景比較復(fù)雜龐大時(shí),Bake的性能比較差??梢酝ㄟ^(guò)配合射線檢測(cè)和自定義高度圖數(shù)據(jù)控制角色高度。
  以上就是奇酷為大家分享的“Unity3D培訓(xùn):MMORPG游戲”謝謝大家觀看,如果對(duì)unity3D感興趣的話,想學(xué)unity3D培訓(xùn)的,也可以在線咨詢,我們將竭誠(chéng)為你解答。
精品久久久久久久久久久院品网_男女男精品视频_日韩**一区毛片_在线免费不卡电影_亚洲少妇屁股交4_久久国内精品视频_日韩一区二区三免费高清_亚洲成人手机在线_91看片淫黄大片一级在线观看_中文字幕亚洲在_日本一区二区在线不卡_欧美酷刑日本凌虐凌虐_理论电影国产精品_国产精品视频yy9299一区_99久久精品免费观看_国产精品久久三
色94色欧美sute亚洲线路二| 成人国产一区二区三区精品| 2023国产精华国产精品| 91精品久久久久久久99蜜桃 | 日韩一区二区三区视频在线观看| 欧美男同性恋视频网站| 欧美一区二区三区人| www久久久久| 国产精品久久久久四虎| 一区二区在线观看免费视频播放| 亚洲成av人**亚洲成av**| 男人的j进女人的j一区| 国产成人精品影视| 国产欧美日韩一区二区三区| 日日夜夜精品网站| 欧美美女激情18p| 久久久www免费人成精品| 亚洲视频一二三区| 久色婷婷小香蕉久久| 97久久超碰国产精品电影| 久久久水蜜桃| 色综合久久天天| 日韩精品一区二区三区视频在线观看| 国产蜜臀97一区二区三区| 一区二区三区在线观看动漫| 黄页视频在线91| 国产成人一区二区三区免费看| 日韩av电影免费在线| 欧美精品日韩一区| 国产精品久久久久一区| 久久精品国产99国产精品| 91视频com| 一区在线电影| 亚洲精品在线观看网站| 亚洲已满18点击进入久久| 国产毛片精品国产一区二区三区| 国产另类第一区| 欧美日韩精品免费观看视频| 欧美激情一区二区三区全黄| 日一区二区三区| 114国产精品久久免费观看| 亚洲欧洲精品在线 | 天堂av一区二区| 8x福利精品第一导航| 亚洲精品福利视频网站| 国产不卡视频一区二区三区| 日本精品二区| 久久久精品影视| 精品一区二区三区久久久| 免费日韩av电影| 制服.丝袜.亚洲.中文.综合| 亚洲一区二区四区蜜桃| 99国产精品99久久久久久| 在线亚洲一区二区| 亚洲精品国产品国语在线app| 成人国产视频在线观看| 中文字幕剧情在线观看一区| 国产欧美日韩在线观看| 国内精品国产成人| 亚洲精蜜桃久在线| 国产精品成人免费在线| www.色精品| 欧美日韩激情在线| 亚洲成人动漫在线免费观看| 91久久国产综合久久蜜月精品| 欧美少妇性性性| 亚洲国产日韩av| 激情久久av| 国产日韩v精品一区二区| 国产精品1区2区3区在线观看| 一区二区成人国产精品| 国产精品久久久久9999吃药| 粉嫩嫩av羞羞动漫久久久 | 国产成人亚洲综合a∨婷婷| 亚洲欧美日韩精品久久久| 国产精品久久久久影院老司| 99久久综合狠狠综合久久| 在线播放亚洲一区| 蜜桃视频在线观看一区| 亚洲日本无吗高清不卡| 亚洲精品日产精品乱码不卡| 成人欧美一区二区三区黑人免费| 日韩久久精品一区| 国产福利精品导航| 欧美精品自拍偷拍| 国产一区二区三区在线观看精品 | 亚洲综合激情另类小说区| 国产欧美日韩一区| 国产片一区二区三区| 91免费在线观看网站| 精品福利一区二区三区| fc2成人免费人成在线观看播放 | 亚洲视频精品一区| 亚洲成人免费在线| 亚洲一区二区三区乱码| 亚洲成人av资源| 亚洲午夜精品久久久中文影院av| 亚洲狠狠丁香婷婷综合久久久| 久久精品中文字幕一区二区三区| 中文子幕无线码一区tr| 国产精品一区二区三区在线| 欧美国产精品中文字幕| 国产一级精品aaaaa看| 国产精品国产三级国产aⅴ中文| 国产精品日韩一区二区| 国产精品精品国产色婷婷| 国产精品10p综合二区| 国产精品国产三级国产普通话蜜臀| 国产精品国产精品| 一区二区三区日韩| 亚洲自拍三区| 国产在线观看一区二区| 欧美一级专区免费大片| 不卡影院免费观看| 欧美国产日产图区| 欧美亚洲免费在线| 奇米777欧美一区二区| 337p亚洲精品色噜噜噜| 北岛玲一区二区三区四区| 国产亚洲精品aa午夜观看| 另类视频在线观看+1080p| 性久久久久久久| 欧美色图12p| av电影在线不卡| 中文字幕一区二| 在线成人性视频| 国产成人精品亚洲午夜麻豆| 国产亚洲欧洲997久久综合| 九色综合婷婷综合| 欧美96一区二区免费视频| 欧美一二三在线| 精品无码久久久久国产| 婷婷成人激情在线网| 日韩视频一区二区三区在线播放| 97久久天天综合色天天综合色hd| 一区二区在线看| 666欧美在线视频| 高清国语自产拍免费一区二区三区| 一二三四社区欧美黄| 欧美日韩一本到| 丁香婷婷久久久综合精品国产 | 国产成人免费在线| 国产农村妇女毛片精品久久麻豆| 亚洲精品欧洲精品| 波波电影院一区二区三区| 悠悠色在线精品| 91精品久久久久久久99蜜桃| 国产精品一区二区三区观看| 日韩电影免费在线看| 精品三级在线看| 日韩欧美亚洲区| av亚洲精华国产精华精华| 亚洲国产日韩一级| 精品粉嫩超白一线天av| 四虎影视永久免费在线观看一区二区三区 | 欧洲另类一二三四区| 91老师片黄在线观看| 日韩国产欧美在线播放| 久久精品亚洲麻豆av一区二区| 精品91免费| 国产成人av影院| 亚洲一区欧美一区| 欧美大胆人体bbbb| 欧美视频小说| fc2成人免费人成在线观看播放| 午夜久久久影院| 国产精品无遮挡| 欧美日韩在线直播| 欧美日韩另类丝袜其他| 国产综合成人久久大片91| 中文字幕中文字幕在线一区| 欧美中文字幕一区二区三区| 国产精品污www一区二区三区| 日韩精品成人一区二区在线| 久久久久久久电影| 欧美日韩精品电影| 久久久久综合一区二区三区| 懂色中文一区二区在线播放| 亚洲人成网站精品片在线观看| 欧美久久一区二区| 亚洲欧美日韩精品综合在线观看| 成人a级免费电影| 奇米精品一区二区三区四区| 久久久不卡网国产精品二区 | 欧美日韩精品一区二区在线播放| 成人av免费电影| 国产不卡视频一区二区三区| 五月天一区二区三区| 国产日韩av一区| 欧美一级在线免费| 午夜精品区一区二区三| 91浏览器入口在线观看| 精久久久久久久久久久| 亚洲成人av电影在线| 日韩一区在线免费观看| 久久先锋影音av鲁色资源网| 欧美美女激情18p| 日本道色综合久久| 一个色的综合| 日韩妆和欧美的一区二区|