unity怎么添加資源 去當(dāng)unity游戲開發(fā)實(shí)習(xí)生應(yīng)該具備哪些能力和知識(shí)?
去當(dāng)unity游戲開發(fā)實(shí)習(xí)生應(yīng)該具備哪些能力和知識(shí)?0x01。項(xiàng)目前期規(guī)劃中的問題這里我們指的不是策劃的需求,也不是游戲性的計(jì)劃,而是作為一個(gè)Unity項(xiàng)目,我們需要在一開始就定義和制定好規(guī)范和標(biāo)準(zhǔn)。
去當(dāng)unity游戲開發(fā)實(shí)習(xí)生應(yīng)該具備哪些能力和知識(shí)?
0x01。項(xiàng)目前期規(guī)劃中的問題
這里我們指的不是策劃的需求,也不是游戲性的計(jì)劃,而是作為一個(gè)Unity項(xiàng)目,我們需要在一開始就定義和制定好規(guī)范和標(biāo)準(zhǔn)。作為一個(gè)Unity項(xiàng)目或者軟件項(xiàng)目,這部分非常重要,因?yàn)轫?xiàng)目的前期規(guī)劃隨著項(xiàng)目的開發(fā)時(shí)間越長(zhǎng)越難修改。
不清楚支持的最低型號(hào)。
作為Unity項(xiàng)目,首先要明確需要支持的最低設(shè)備標(biāo)準(zhǔn)。項(xiàng)目團(tuán)隊(duì)?wèi)?yīng)該有這樣的設(shè)備供開發(fā)和QA團(tuán)隊(duì)使用。
否則,項(xiàng)目的優(yōu)化將是不可能的。
資源標(biāo)準(zhǔn)不明確
開發(fā)過Unity項(xiàng)目的同學(xué)可能都有過類似的經(jīng)歷,就是開發(fā)過程中的資源標(biāo)準(zhǔn)不明確。這通常是由于在早期項(xiàng)目規(guī)劃中沒有注意資源標(biāo)準(zhǔn)造成的。
所以在項(xiàng)目前期,最好明確模型中頂點(diǎn)數(shù)量、紋理資源大小格式等資源標(biāo)準(zhǔn)。
您還應(yīng)該對(duì)每個(gè)幀開銷中花費(fèi)在腳本和渲染上的時(shí)間有一個(gè)目標(biāo)和預(yù)期。
沒有合理的資產(chǎn)裝配線
這里的意思是資源要按照一定的流程和標(biāo)準(zhǔn)從art導(dǎo)入到Unity項(xiàng)目中。
許多項(xiàng)目以性能問題告終,因?yàn)闆]有合理的資產(chǎn)管道。因此,項(xiàng)目中的資源標(biāo)準(zhǔn)無法管理,許多冗余或不兼容的資源被內(nèi)置到最終的安裝包中。
所以作為項(xiàng)目團(tuán)隊(duì),每個(gè)人都必須指定一個(gè)自動(dòng)化的資產(chǎn)流水線。為資產(chǎn)的規(guī)格和標(biāo)準(zhǔn)制定明確的規(guī)格,并在自動(dòng)化腳本中進(jìn)行設(shè)置。
比如,texture是否開啟讀/寫?紋理的壓縮格式?尺寸?非人類模型在導(dǎo)入時(shí)會(huì)關(guān)閉裝備嗎?動(dòng)畫模型是否啟用了優(yōu)化游戲?qū)ο筮x項(xiàng)?等一下。
沒有合理的建設(shè)和QA流程。
也有很多項(xiàng)目建設(shè)不順利,建成的版本很難管理。規(guī)劃或者QA往往是為某個(gè)功能的開發(fā)找一個(gè)包。
所以項(xiàng)目組可以思考以下問題:
有專門的打捆機(jī)嗎?
一個(gè)新特性是如何發(fā)布到最終發(fā)布版本的?
是否有自動(dòng)化可持續(xù)集成設(shè)施(CI)?
QA應(yīng)該如何反饋bug,如何有效管理?
正式項(xiàng)目直接在演示原型上開發(fā)。
這也是常見的情況。在一些項(xiàng)目團(tuán)隊(duì)中,少數(shù)人會(huì)在前期開發(fā)一些試玩游戲。演示通過后,他們將開始開發(fā)正式的項(xiàng)目。
這時(shí)候就會(huì)出現(xiàn)一個(gè)問題,就是在Demo的基礎(chǔ)上直接開發(fā)正式項(xiàng)目。因?yàn)楹芏郉emo只是為了演示游戲性,所以代碼中有很多具體的Hack來盡快實(shí)現(xiàn)需求。
如果正式項(xiàng)目以此為基礎(chǔ),到后期維護(hù)會(huì)比較麻煩。
除了上面提到的問題,還有一些其他需要注意的內(nèi)容,比如制定統(tǒng)一的編碼標(biāo)準(zhǔn),確定光照模式(RealTime?混合?烤的?)等等。
0x02。項(xiàng)目開發(fā)過程中的問題
經(jīng)過項(xiàng)目的前期策劃階段,到了項(xiàng)目的開發(fā)階段,項(xiàng)目團(tuán)隊(duì)可能會(huì)犯哪些錯(cuò)誤?一些不好的做法可能會(huì)減緩項(xiàng)目的開發(fā)進(jìn)度,增加項(xiàng)目團(tuán)隊(duì)成員的焦慮。
不重視版本管理
許多團(tuán)隊(duì)不 不重視版本管理,或者他們對(duì)git等版本管理不熟練。
當(dāng)然,有很多關(guān)于git最佳實(shí)踐的信息。建議項(xiàng)目組進(jìn)行內(nèi)部培訓(xùn)和普及,讓每個(gè)人(編程美工策劃等)都能操作符合規(guī)范的版本管理。
對(duì)于Unity項(xiàng)目,序列化的格式建議設(shè)置為文本序列化。
設(shè)置提交掛鉤:
靜態(tài)數(shù)據(jù)存儲(chǔ)在Json或XML文件中。
很多團(tuán)隊(duì)喜歡或者習(xí)慣用Json文件或者XML文件來保存一些靜態(tài)數(shù)據(jù),在游戲運(yùn)行的時(shí)候加載。但是使用Json或者XML文件保存數(shù)據(jù)會(huì)有以下問題:
裝載速度慢。解析時(shí)會(huì)有內(nèi)存開銷。所以最好使用二進(jìn)制來保存數(shù)據(jù),Unity內(nèi)部也提供了ScriptableObject來幫助保存數(shù)據(jù)。
項(xiàng)目包含未使用的資源、插件或冗余庫(kù)。
這也是很多團(tuán)隊(duì)的通病。一些廢棄的資源沒有及時(shí)處理,留在項(xiàng)目中甚至內(nèi)置到最終發(fā)布版本中,造成了不必要的開支。
另一個(gè)問題是冗余或具有相同功能的多個(gè)庫(kù)。比如項(xiàng)目中使用的很多插件都是使用Json解析庫(kù),會(huì)造成冗余。
僅在編輯器中測(cè)試性能。
這是一個(gè)非常不好的發(fā)展習(xí)慣。因?yàn)榫庉嬈鞯男阅艹杀臼窃诰庉嬈髦袦y(cè)試的,而不是在真正的目標(biāo)平臺(tái)上。因此,在創(chuàng)建概要文件時(shí),必須在目標(biāo)平臺(tái)的設(shè)備上完成。否則只能得到誤導(dǎo)性的數(shù)據(jù)。例如,在Editor中,API GetCompon
unity3d對(duì)美術(shù)資源的加密方式有哪些?
C#代碼混亂。深入來說,你可以嘗試修改mono加載dll的。官方有一個(gè)開源的mono git。
樓上說assetbundle是加密的。如果在這里添加資源文件名,也可以使用md5哈希。
如果使用其他腳本來加密參考腳本語言本身,lua可以使用luajit,