unity自己遇到的一些bug与解决方法的记录
場(chǎng)景跳轉(zhuǎn)后,材質(zhì)丟失
原因:因?yàn)闆]有光照,加入光照即可
無法調(diào)用系統(tǒng)的函數(shù)
(實(shí)際上寫的時(shí)候發(fā)現(xiàn)不能調(diào)用這個(gè)api,原因是在于自己命名了一個(gè)Camera的腳本這樣會(huì)覆蓋系統(tǒng)自帶的。)
一些經(jīng)驗(yàn)總結(jié)
- 寫完某段功能時(shí)要在旁邊標(biāo)上注釋
- 不要在update里放那么多東西,封裝成函數(shù)再放在update里調(diào)用,養(yǎng)成好習(xí)慣。
了
因?yàn)榭佳泻荛L(zhǎng)時(shí)間沒碰unity再碰unity時(shí)的感受:
2022.1.21做gamejam的2d平臺(tái)跑酷游戲中得到的經(jīng)驗(yàn)教訓(xùn):
簡(jiǎn)單的2d平臺(tái)跑酷游戲好像看似很簡(jiǎn)單,但是我卻眼高手低,以為這些很簡(jiǎn)單都很好實(shí)現(xiàn)。但是事實(shí)上是,雖然以前自己做過這些東西,但全都是按照教程去跟著一步一步照貓畫虎去做的,做完之后自己并沒有拋開教程去復(fù)刻一遍,于是導(dǎo)致了這樣的情況:
每一行代碼大概都能看懂在做什么,但是連起來,為什么這么做的邏輯,可能無法完全理解
有些東西你拋開教程自己去做然后會(huì)發(fā)現(xiàn)說,自己忘了一些細(xì)節(jié)。比如實(shí)現(xiàn)跳躍,需要有幾個(gè)關(guān)鍵點(diǎn):①不能讓玩家在空中連續(xù)跳躍多次 ②要實(shí)現(xiàn)跳躍后,離地的判斷。 ③普通跳躍與蓄力跳躍
兩個(gè)腳本中的update和fixedupdate存在互相獲取值變量時(shí)會(huì)出現(xiàn)的影響
A腳本中的變量如果是在fixedupdate函數(shù)中更新的,而在B腳本中,我們?cè)趗pdate函數(shù)中去獲取A腳本的這個(gè)update函數(shù)的變量的值,那么此時(shí),兩個(gè)函數(shù)的獲取速度會(huì)有差異。:
這可能會(huì)造成意想不到的影響。
獲取玩家輸入使用update而不是fixedupdate
使用getkeydown的話,接受玩家的輸入不能放在fixedupdate中,否則可能會(huì)丟失一瞬間的輸入。
粗心的錯(cuò)誤
聲明某個(gè)變量,并在start函數(shù)中初始化時(shí),不小心寫成了這樣的形式:
這樣會(huì)導(dǎo)致最終無法成功初始化
對(duì)象引用對(duì)于非靜態(tài)的字段,方法或?qū)傩允潜仨毜?/h2>
犯的錯(cuò)誤如下:首先在類中聲明了一個(gè)非靜態(tài)變量
但是此處我卻在靜態(tài)成員函數(shù)中聲明它:
這里就犯了一個(gè)很明顯的錯(cuò)誤,對(duì)于靜態(tài)成員函數(shù),是不能為非靜態(tài)成員變量初始化的,也不能調(diào)用非靜態(tài)成員方法。
因?yàn)殪o態(tài)成員函數(shù)屬于整個(gè)類,在類實(shí)例化對(duì)象之前就已經(jīng)分配空間了,而類的非靜態(tài)成員必須在類實(shí)例化對(duì)象后才有內(nèi)存空間,所以這個(gè)調(diào)用就會(huì)出錯(cuò),
類里面的方法有兩種表現(xiàn):一種是直接可以來用的,還有一種是必須實(shí)例化以后才能使用的。前者要求在方法生明的時(shí)候必須加上static關(guān)鍵字。
簡(jiǎn)單來說引發(fā)這個(gè)bug的原因就是調(diào)用類里面的非靜態(tài)方法、成員變量所導(dǎo)致的。
物體跳躍時(shí)移動(dòng)卡墻的問題
此處使用的是改變物體的速度,使其移動(dòng)的。
一旦鎖住其z的旋轉(zhuǎn),會(huì)導(dǎo)致其在移動(dòng)時(shí),會(huì)需要卡住z的旋轉(zhuǎn)角度,從而導(dǎo)致卡墻。
解決方法:
給物體添加光滑的物理材質(zhì),給玩家也添加光滑的物理材質(zhì)。
人物走路遇到很小的坡走不動(dòng)
因?yàn)樵O(shè)置成剛體又鎖住了旋轉(zhuǎn)導(dǎo)致走不過去,可以將人物的立方體的碰撞箱改為膠囊體即可。
善用微軟官方英文文檔解決錯(cuò)誤
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference
可以在上面搜索c#的文檔
子類希望隱藏父類的變量需加new關(guān)鍵字
如圖所示 父類中有一模一樣的變量名,如果希望隱藏父類的關(guān)鍵名需加new關(guān)鍵字。
導(dǎo)入包時(shí),物體的層級(jí)消失
如下所示
是因?yàn)樽约鹤霭娜俗约涸O(shè)置了層級(jí),但是導(dǎo)出包后再導(dǎo)入的人則會(huì)丟失該層級(jí),此處就需要自己手動(dòng)設(shè)置層級(jí)。
無法在人物靜止時(shí)賦予agent速度
想通過直接設(shè)置agent的速度來模擬擊退效果,結(jié)果發(fā)現(xiàn)當(dāng)人物處于靜止?fàn)顟B(tài)時(shí),agent的速度賦值不上的問題。但是當(dāng)人物處于移動(dòng)狀態(tài)時(shí),卻能正常賦值。
解決方法:禁用Auto Braking即可。
總結(jié)
以上是生活随笔為你收集整理的unity自己遇到的一些bug与解决方法的记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何掘到第一桶金
- 下一篇: 通过注册表改变“我的文档”等的默认位置