最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

偷題——騰訊游戲開發(fā)面試問題及解答

2020-10-20 17:11 作者:博毅創(chuàng)為  | 我要投稿


前言

Blake老師有個朋友在騰訊某分部做技術總監(jiān),負責的工作中就包含面試招聘。

那么,近水樓臺先得月~Blake老師根據(jù)面試的問題,作出了以下解答,希望能幫到你順利入職。

01?Unity項目開發(fā)中程序如何愉快的與策劃溝通?

在游戲開發(fā)中,策劃希望能方便地改游戲數(shù)值,游戲數(shù)據(jù),能夠靈活的編輯一些規(guī)則,并且希望在改數(shù)據(jù)時不用問程序,馬上就能拋出效果,策劃在改規(guī)則的時候也希望如此。

規(guī)則一般體現(xiàn)在怪物AI等方面,數(shù)據(jù)一般提現(xiàn)在數(shù)值計算方面。

如果是怪物AI等行為編輯比較多的,我們可以提供給策劃行為決策樹等編輯工具,讓策劃編輯行為和決策。數(shù)值計算,我們提供好數(shù)值策劃表解決方案,讓策劃非常方便的修改里面的數(shù)據(jù)表等。游戲的地圖制作,也是策劃經(jīng)常要干預的地方,Unity項目開發(fā)中地圖編輯器要做好。

02?Unity項目開發(fā)如何避免多人開發(fā)是的提交沖突?

在團隊項目開發(fā)中,由于大家各自開發(fā)格子的模塊或同時開發(fā)交叉的模塊,會導致一些項目提交時候的沖突,Unity開發(fā)中如何避免沖突或者有沖突的時候非常方便的合并呢?

提供幾個經(jīng)驗供大家參考。

1、代碼沖突的合并相對比較簡單,文本合并即可,很多版本管理工具自動就能幫你合并好。即使有沖突,人眼很快就能解決,畢竟都是文本代碼。

2、 游戲場景沖突就不那么好合并了,因為游戲場景本省不是文本,同時合并的時候可能會導致一些參數(shù)要重新指定等,所以很多Unity項目不會往場景里面放任何內容,而是把內容分成一個一個的預制體,每一個人負責一個預制體(視圖)。盡量避免多人同時操作一個視圖。

3、不要在視圖節(jié)點上直接掛代碼,也不要在代碼上直接綁定視圖的節(jié)點組件等,這些都不利于代碼沖突解決,全部都通過代碼來完成。

總結一下:避免多人修改同一視圖,視圖上不掛腳本,全部通過代碼來控制邏輯,代碼提交沖突非常方便解決。

03?Unity Set Pass Call是什么?

繪制一個3D物體完成的流水線叫做Pass。

Unity引擎繪制物體之前,先要給GPU流水線來裝載對應的Shader設置相關Shader參數(shù),叫做SetPassCall。

Set Pass call發(fā)生在切換Shader的時候,這個性能開銷也比較大,所以我們要盡量避免不斷的設置與切換Shader,同時常用的Shader要緩存到內存里面,這樣每次切換的時候速度會比較快。

04?Unity DrawCall是什么?

Unity繪制一個場景的時候,把場景里面的物體分成幾個批次提交給GPU繪制就是幾個DrawCall。

05?降低DrawCall對性能提升的意義是什么?

降低DrawCall,CPU可以把繪制的數(shù)據(jù)一次提交給GPU,比多次提交性能要好,同時GPU繪制的時候一次處理的越多,GPU的吞吐量就越多,就越能發(fā)揮GPU的性能。

06?Unity 是單線程還是多線程的?

Unity可以支持用戶自己開發(fā)使用多線程,比如用戶做網(wǎng)絡模塊的時候,可以開一個線程來做網(wǎng)絡消息的讀取等。

Unity框架里面是兩個線程,一個是main thread,一個是render thread, main thread負責業(yè)務邏輯線程,跑Mono代碼,物理引擎代碼等,render thread負責處理繪制相關,將繪制相關數(shù)據(jù)提交給GPU。

所以unity內部是多線程的,Unity的很多API與場景組件相關API必須要在main thread里面調用,不能在其他線程調用。

07?Unity有哪些合批方式可以降低DrawCall

Unity合批的方式有靜態(tài)合批,動態(tài)合批,與GPU Instancing合批,三種方式可以合并DrawCall。

08?Unity 如何分析內存占用?

遇到內存問題的時候,我們經(jīng)常不知道如何優(yōu)化降低內存的占用,其實處理這樣的問題并不難。

首先你要分析出來哪些地方占用的內存比較多,把內存占用比較多的地方分析出來才是優(yōu)化的首要關鍵。

Unity提供了Profiler工具,可以查看內存的占用情況,如下圖:


09?Unity 如何分析性能熱點?

項目開發(fā)時要對代碼進行優(yōu)化,提升代碼性能。

提升代碼性能要找出來哪些地方是性能的熱點,才是最重要的。

假如你花了100分的力氣,去優(yōu)化一個,性能占用只有10%的地方,這樣優(yōu)化出來的效果也不會提升多少,所以我們優(yōu)化性能一定要從優(yōu)化熱點下手。

如何找到性能優(yōu)化熱點呢?Unity提供了Profiler工具,幫我們把性能的熱點函數(shù)都分析出來了,你可以根據(jù)時間占比,調用次數(shù),來優(yōu)化相關的時間。如圖:


10?Unity如何查看當前場景的DrawCall?

Unity如何查看當前的DrawCall, Unity可以通過profiler和Stats來查看當前DrawCall的占用,Stats 如下圖:


Profiler如下圖:


同樣的職位,自然是大企業(yè)更有前途和“錢途”。

END

想知道大廠面試都問什么,請在文章下方評論后私信大廠面試題?即可獲?。。?!


偷題——騰訊游戲開發(fā)面試問題及解答的評論 (共 條)

分享到微博請遵守國家法律
隆子县| 台南市| 信丰县| 体育| 手机| 泸西县| 桂阳县| 左云县| 新干县| 湖北省| 杭州市| 石阡县| 漯河市| 景泰县| 叶城县| 大埔县| 理塘县| 阳朔县| 阿鲁科尔沁旗| 伊金霍洛旗| 元江| 营口市| 和平区| 涞源县| 宜兴市| 思茅市| 阜南县| 嘉祥县| 海淀区| 城步| 油尖旺区| 精河县| 乌苏市| 镇远县| 巩义市| 昔阳县| 会东县| 昆明市| 莒南县| 武冈市| 张北县|