ChatGpt用于Unity復(fù)雜功能的開發(fā)測試
? ? 綜合測試感受:顯然chatgpt的代碼能力會和使用他的人的專業(yè)程度以及知識量正相關(guān),個人感覺在未來近幾年內(nèi)能夠善用AI工具的個人或者團體可能會在中低競爭環(huán)境里取得驚人的優(yōu)勢,比如初高中大學(xué)等時期反AI審查工具還未普及的時期內(nèi),掌握多種AI工具的學(xué)生能夠快速完成各種報告、論文、作業(yè)等形式化任務(wù),從而將爭取出來的時間投入到更高價質(zhì)量的自身培養(yǎng)上,而未掌握相關(guān)技能的學(xué)生很有可能會因此被拉開大量時間資源上的差距。而小團體、小作坊等利用各類AI生產(chǎn)力工具能夠大幅度提高生產(chǎn)效率,但是生產(chǎn)結(jié)果的質(zhì)量顯然需要操作者具備足夠的專業(yè)知識以及對AI提示有足夠的經(jīng)驗積累,這個經(jīng)驗積累最終可能在近未來一段時間內(nèi)提高小團體綜合競爭力的關(guān)鍵要素。實際上chatgpt目前就能幫助王師傅完成一定量的工作,讓我可以釋放出更多自由時間。
? ? ?這或許會對Clever &Greed 的年輕人來說是一次巨大的機遇,而對一些從相較傳統(tǒng)行業(yè)起來的rich可能不太友好。
提問一:

回答一:
提問二:

回答二:



在優(yōu)化后的代碼中,射線檢測僅在檢測到擊中時進(jìn)行,而不是在每個 FixedUpdate() 中都進(jìn)行。這可以通過在 OnTriggerEnter() 或 OnCollisionEnter() 中執(zhí)行射線檢測,或者通過單獨的檢測腳本來實現(xiàn)。
為了避免使用 Mathf.Pow() 函數(shù)和 Mathf.Sqrt() 函數(shù),我們使用了平方和乘法來代替平方根,使用乘法和除法來代替指數(shù)運算,并手動計算了向量長度和進(jìn)行了向量歸一化。
我們還減少了 GetComponent() 函數(shù)的調(diào)用次數(shù),并且避免在 FixedUpdate() 中頻繁使用 Time.time。最后,我們使用了 Rigidbody.MovePosition() 來更新子彈的位置,而不是使用 Rigidbody.velocity,這樣可以減少一些不必要的計算和內(nèi)存分配。
提問三:

回答三:

子彈生命周期在客戶端上受控制。在單人游戲中,這可能不是問題,但在多人游戲中,客戶端可以通過修改代碼或發(fā)送欺騙性的網(wǎng)絡(luò)數(shù)據(jù)來延長子彈的生命周期。這可能導(dǎo)致其他玩家或服務(wù)器上的物體受到無限傷害。
解決方案:將子彈生命周期移動到服務(wù)器端,通過網(wǎng)絡(luò)同步子彈的生命周期。
子彈銷毀僅在客戶端上進(jìn)行。在多人游戲中,如果客戶端銷毀了子彈,但其他玩家或服務(wù)器上的物體仍然存在,這可能會導(dǎo)致其他玩家或服務(wù)器上的物體受到無限傷害。
解決方案:在服務(wù)器端進(jìn)行子彈銷毀??梢酝ㄟ^在客戶端上向服務(wù)器發(fā)送命令來銷毀子彈,并通過網(wǎng)絡(luò)同步銷毀命令。
射線檢測僅在客戶端上進(jìn)行。在多人游戲中,如果客戶端檢測到了擊中,但其他玩家或服務(wù)器上的物體沒有檢測到擊中,這可能會導(dǎo)致不一致的游戲狀態(tài)。
解決方案:在服務(wù)器端進(jìn)行射線檢測??梢酝ㄟ^在客戶端上向服務(wù)器發(fā)送射線檢測結(jié)果來同步擊中結(jié)果。
總的來說,在多人游戲中,應(yīng)該盡量將游戲邏輯放在服務(wù)器端進(jìn)行,并通過網(wǎng)絡(luò)同步游戲狀態(tài)。這樣可以避免客戶端和服務(wù)器之間的不一致,提高游戲的安全性和可靠性。
提問四:

回答四:

服務(wù)器端腳本 BulletControllerServer.cs:
在這個版本中,客戶端和服務(wù)器之間通過PUN2來同步子彈的位置和旋轉(zhuǎn),客戶端只需要在自己的本地上處理子彈的運動和檢測,并通過PUN2發(fā)送命令到服務(wù)器上銷毀子彈。服務(wù)器負(fù)責(zé)處理所有子彈的移動和檢測,并在擊中物體或超過最大壽命時銷毀子彈。這樣,就避免了客戶端篡改子彈位置和檢測結(jié)果的安全問題。
需要注意的是,服務(wù)器上的 BulletControllerServer 腳本不需要添加到任何游戲?qū)ο笊?,而是通過 Photon。