不卡一区二区三区四区_乱中年女人伦av一区二区_美洲天堂一区二卡三卡四卡视频 _国产一区在线精品_91精品国产品国语在线不卡_99在线精品视频_99这里都是精品_国产99久久精品_99re成人在线_亚洲二区在线视频_久久先锋资源网_国产69精品久久久久毛片_亚洲一区二区三区视频在线_91小视频免费观看_欧美制服丝袜第一页_欧美日韩视频在线一区二区

您現(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)為你解答。
不卡一区二区三区四区_乱中年女人伦av一区二区_美洲天堂一区二卡三卡四卡视频 _国产一区在线精品_91精品国产品国语在线不卡_99在线精品视频_99这里都是精品_国产99久久精品_99re成人在线_亚洲二区在线视频_久久先锋资源网_国产69精品久久久久毛片_亚洲一区二区三区视频在线_91小视频免费观看_欧美制服丝袜第一页_欧美日韩视频在线一区二区
精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 亚洲一级电影视频| 国产精品久久久久久久久果冻传媒| 精品国产乱码久久久久久浪潮| 亚洲精品在线网站| 久久久久久麻豆| 国产精品美日韩| 亚洲综合色自拍一区| 视频一区视频二区在线观看| 美女尤物国产一区| 高清久久久久久| 国产精品av一区| 色综合电影网| 欧美在线色视频| 欧美一区三区四区| 欧美激情一区二区三区全黄| 亚洲精品国产视频| 久久国产精品免费| 99久久精品免费看| 欧美日韩免费精品| 在线观看亚洲成人| 欧美一三区三区四区免费在线看 | 99久久婷婷国产综合精品| 9a蜜桃久久久久久免费| 日本在线一区| 88在线观看91蜜桃国自产| 国产亚洲一二三区| 亚洲成av人片在线观看无码| 国产一区二区三区不卡在线观看| 91同城在线观看| 亚洲精品无人区| 精品嫩草影院久久| 一级做a爱片久久| 国产成人亚洲精品狼色在线| 精品欧美一区二区三区久久久 | 国产亚洲精品aa午夜观看| 亚洲精品国产成人久久av盗摄| 久久精品噜噜噜成人av农村| 99精品视频在线免费观看| 日韩欧美亚洲精品| 精品区一区二区| 亚洲123区在线观看| 成人网在线免费视频| 麻豆久久久9性大片| 7777精品伊人久久久大香线蕉完整版 | 中文字幕中文字幕99| 日韩欧美中文字幕精品| 亚洲一区二区五区| 99久久精品国产网站| 亚洲免费久久| 日本一区二区三区电影| 精品一区二区影视| 欧美一二三区| 精品久久久久久久久久久院品网| 无吗不卡中文字幕| 国产精品三区www17con| 91精品啪在线观看国产60岁| 一区二区三区中文免费| 91在线免费播放| 欧美日韩国产综合一区二区三区 | 91色在线porny| 欧美日韩国产片| 一区二区三区四区高清精品免费观看 | 日韩一区二区在线观看| 亚洲小说春色综合另类电影| av爱爱亚洲一区| 色嗨嗨av一区二区三区| 亚洲男人的天堂在线观看| 99精品视频在线免费观看| 欧美三级中文字幕| 亚洲一本大道在线| 国产亚洲欧美一区二区| 久久综合久久鬼色中文字| 国产在线精品国自产拍免费| 一级二级三级欧美| 亚洲精品v日韩精品| aaa级精品久久久国产片| 91精品国产品国语在线不卡| 日韩精品久久久久久| 欧美精品v日韩精品v国产精品| 久久伊人中文字幕| 粉嫩aⅴ一区二区三区四区| 欧美性猛片xxxx免费看久爱| 亚洲成人动漫精品| 欧美一区二区福利| 亚洲欧美日韩国产另类专区| 成人高清在线观看| 亚洲精品一区二区三区在线观看| 国产一区视频在线看| 91黄色免费看| 蜜桃精品视频在线| 日本久久电影网| 日本欧美一区二区三区乱码 | 欧美成人激情免费网| 国产麻豆精品一区二区| 欧美日韩精品是欧美日韩精品| 日韩电影一二三区| 亚洲在线播放电影| 亚洲不卡av一区二区三区| 亚洲精品国产系列| 亚洲大片精品永久免费| 五月天丁香综合久久国产 | 国产成人精品免费在线| 欧美一区欧美二区| 日韩三级.com| 成人免费毛片aaaaa**| 欧美一区二区三区在线观看视频 | 精品一区二区在线视频| 欧美日韩另类一区| 国产成人99久久亚洲综合精品| 日韩欧美专区在线| 97精品久久久午夜一区二区三区 | 精品亚洲欧美一区| 欧美疯狂性受xxxxx喷水图片| 国产自产v一区二区三区c| 91精品国产免费| 91色在线porny| 日韩一区欧美一区| 亚洲韩国在线| 九一久久久久久| 日韩欧美久久久| 国产精品xxxx| 亚洲影院久久精品| 91精品福利视频| 成人黄色电影在线| √…a在线天堂一区| 亚洲日本精品国产第一区| 老司机午夜精品| 精品国产乱码久久久久久久 | 91在线porny国产在线看| 日本一区二区久久| 日韩精品资源| 极品少妇一区二区三区精品视频| 精品日韩在线观看| 女同一区二区| 久久国产夜色精品鲁鲁99| 欧美成人福利视频| 久久国产一区| 激情综合网av| 国产精品嫩草99a| 色综合天天综合网国产成人综合天 | 国产91对白在线观看九色| 欧美激情一区二区三区蜜桃视频 | 亚洲精品第一国产综合野| 欧美影片第一页| 91成人免费看| 午夜精品久久久久久久久久久| 欧美日韩精品欧美日韩精品一 | 青娱乐精品视频| 久久久久久久久久看片| 色噜噜狠狠色综合网| 国产成人亚洲综合a∨猫咪 | 激情文学综合网| 国产三级三级三级精品8ⅰ区| 欧美日韩一区二区三| 国产精品一品二品| 亚洲美腿欧美偷拍| 91精品黄色片免费大全| 精品蜜桃传媒| 丰满少妇久久久久久久| 亚洲一区二区三区爽爽爽爽爽| 91精品国产aⅴ一区二区| 久久亚洲免费| 成人免费毛片高清视频| 亚洲成va人在线观看| 久久久久免费观看| 91福利在线导航| 久久本道综合色狠狠五月| 国产精品综合二区| 亚洲最新在线观看| 精品久久久影院| 色综合中文字幕国产 | 正在播放亚洲一区| 欧美伦理一区二区| av午夜一区麻豆| 精品在线一区二区| 亚洲精品国产精品乱码不99| 亚洲精品一区二区三区在线观看| 一本色道**综合亚洲精品蜜桃冫| 国产a一区二区| 国产精品18久久久久久久网站| 一区二区不卡在线视频 午夜欧美不卡在 | 国产麻豆精品theporn| 亚洲电影中文字幕在线观看| 国产亚洲精品aa| 91精品国产欧美一区二区18| 亚洲欧美日韩精品在线| 国产激情一区二区三区在线观看 | 一本大道av伊人久久综合| 高清国产一区| 成人涩涩免费视频| 精品一区二区在线视频| 亚洲高清在线精品| 1000部国产精品成人观看| 国产视频一区二区在线观看| 日韩一级片网址| 91久久线看在观草草青青| 亚洲不卡一卡2卡三卡4卡5卡精品| 国内精品久久久久久久果冻传媒| 99久久精品国产毛片|