Unity小组工程实践项目《最强外卖员》策划案纠错文档
Unity小組工程實踐項目《最強外賣員》策劃案&糾錯文檔
二人小組合作開發(fā)的工程實踐Unity游戲,在此記錄策劃案和糾錯文檔,以便日后方便查詢
開發(fā)平臺:Unity
使用語言:C#
團隊成員:2人
**
策劃案:
**
最強外賣員策劃案
背景:
開始顯示ui:
在十字城市中長期存在兩個惡勢力A,B組織,他們之間長期存在不正當(dāng)?shù)慕灰?#xff0c;你作為C組織派來的特務(wù),要想方設(shè)法幫助自己的組織獲得秘密情報,從而占領(lǐng)這座城市。C組織得知,AB組織都不愿過多暴露自己的勢力,經(jīng)常假借外賣線下委托單讓當(dāng)?shù)氐母咝羌壴u分外賣員為他們傳送情報,因此,你決定以外賣員的身份為偽裝,一方面走街串巷了解城市基本情況,更重要的是截取AB組織的重要情報并上報給自己的組織……
十字城部分
游戲封面 開始游戲,設(shè)置,退出游戲
點擊開始游戲
出現(xiàn)操作說明UI:人物操作按鍵,任務(wù):這里是當(dāng)前需要派單的外賣清單,會根據(jù)完成情況隨時更新,請注意查收(當(dāng)收到新任務(wù)的時候會有小紅點提示)
背包系統(tǒng):里面是待運送的貨物,以禮品UI顯示
進入UI顯示,右上角分別是職業(yè)等級,道德指數(shù),摩托車生命值
初始外賣組長提醒玩家好好上班以及,需要隨時關(guān)注摩托電量,以及及時充電,不然可能會影響派單
為了避免沖突,加油P,對話M
對話臺詞(為了方便展示,游戲里面對話臺詞是中英對照,因為確實不能對話框里面放太多字不然小的根本看不見,所以中英確實沒辦法末尾換行,如果后面效果不佳,酌情取消中英對照,只使用純英文內(nèi)容)
n-TheDeliveryBro 外賣團長
Hey there, new guy! Welcome to join our delivery team!
你好啊,新來的!歡迎加入我們外賣員隊伍!
n-TheDeliveryBro 外賣團長
I’m the head of the delivery team, and since this is your first time in the business, I have a few words of advice for you:
我是這里的外賣團長,鑒于你是第一回干這行,有幾句話哥得叮囑你:
n-TheDeliveryBro 外賣團長
First, when delivering takeout, you must check the destination and kind of the deliveries.第一,送外賣的時候一定要看清楚目的地和外賣類型
n-TheDeliveryBro 外賣團長
Be careful not to send them to the wrong place, or customers will give bad comments!小心不要送錯了,不然顧客會給差評的!
n-TheDeliveryBro 外賣團長
Second, although 996 is a blessing, but also pay attention to not tired out!
雖然996是福報,但是也要注意不要累壞了身子!
n-TheDeliveryBro 外賣團長
If you feel tired, be sure to get to one of the delivery man‘s rest stops around here in time to replenish your energy!
如果感到體力不支,務(wù)必及時趕到這附近的外賣員休息站補充體力!
n-TheDeliveryBro 外賣團長
第三,這座城市并不太平,時刻注意安全。
n-TheDeliveryBro 外賣團長
Good luck, little brother! Strive to be the best delivery man!
祝你好運,小兄弟!努力成為最強外賣員吧!
n-you 你
All right! Thank you!
好嘞!謝謝團長!
充電站 預(yù)制體名字:Electricity_Meter_04 Unpack之后改名ChargePlace
上面給他放了個UI表示這里有電,G鍵長按空格充電,直到充滿
升級外賣第二顆星
從最好的豬肉焦燒送到健康食品店旁邊的鐵門
From “The best pork charred” to the iron door next to the "health food store.
送肉,枚舉類型meat
顧客對話內(nèi)容:
n-you 你
Hello, this is your takeout!
您好,這是您的外賣!
n-Customers waiting for takeout 等外賣的顧客
Wow, that’s just in time. Thank you!
哇,太及時了,謝謝你!
升級第三顆,從不知名魚店送到女裝童裝店和水族館之間的鐵門
From “unknown fish shop” to an iron door which is between “children’s clothing shop” and “aquarium”
送魚,枚舉類型fish
顧客對話內(nèi)容:
n-you 你
Hello, here’s your takeaway!
您好,您的外賣在這!
n-Customers waiting for takeout 等外賣的顧客
Thank you so much, five-star review!
太感謝了,五星好評!
升級第四顆星,從不知名外賣作坊送到國家美食餐廳
From anonymous Takeout to National Cuisine.
枚舉類型vegetable
顧客對話內(nèi)容:
n-Customers waiting for takeout 等外賣的顧客
Thank you for delivering our takeout, young man!
謝謝你送來我們的外賣,小伙子辛苦了!
n-you 你
You’re welcome
不客氣
———————————————————————————————————————
送完后,禁止玩家控制權(quán),從旁邊走出一個大哥,對話內(nèi)容:
n- the Social Bro 社會大哥
Wait,please.
等等,別走!
n- the Social Bro 社會大哥
I heard that you are our best delivery man, I have a big order, with very high salary, take?
聽說你是我們這最好的外賣員,我這有個大單子,薪酬很高,接嗎?
n-you 你
Okay, no problem. I 'll take it.
好的,沒問題,包在我身上!
n- the Social Bro 社會大哥
Be careful, this must be delivered!
你可小心點,一定要送到
從國家美食餐廳送到來自大陸的鮮花店
From “national gourmet restaurants” to “flower shops from the mainland”
枚舉類型document
n-theSocialSister 黑幫大姐
Thank you. I got your stuff, but I have something which needs you to take back.
謝謝你,東西我收到了,不過我這有一樣?xùn)|西需要你送回去。
n-you 你
Sure,OK.
好的可以。
———————————————————————————————————————
從來自大陸的鮮花店送回國家美食中心
From “flower shop from mainland China” to “national gourmet restaurant”
枚舉類型special
玩家自言自語:
等大姐走后,玩家自言自語:“終于拿到了組織需要的文件,我得趕快離開這里!”(為了實現(xiàn)方便,這段劇情被移到這了)
I finally got the files the boss needed! I need to get out of here ASAP!
終于拿到了上級需要的文件,我得盡快離開這里!
In case not to be questioned, I’d better talk to the Delivery team leader.
為了防止被懷疑,還是跟團長交代一下吧。
因為要和組長對話兩次,所以第一次對話完要移除talkable腳本,結(jié)尾對話讓Conditional Talkable腳本發(fā)揮作用
n-you 你
Sorry,Bro, I have chores to deal with recently and I have to ask for leave for some time.
團長,我手頭最近有一些私事,需要離職一段時間。
n-TheDeliveryBro 外賣團長
Okay, that’s fine.
好的,沒事。
———————————————————————————————————————
小偷碰到玩家偷外賣對話(就一個小偷)
n-The thief小偷
This free gift mine,thank you very much
你的好東西我拿走啦,謝謝您嘞!
———————————————————————————————————————
警察逮到主角對話(就一輛警車)
n-The police 警察
You! Why do you see us so nervous? Come and have a chat with us!
你!看見我們這么緊張干什么?跟我們走一趟聊聊天去!
玩家回到出生點,跟組長交接工作,游戲結(jié)束,任務(wù)勝利。
如果玩家拿著大哥的東西直接跑了,準(zhǔn)備跑回去,從保險代理人這里觸發(fā)傳送
進入新場景則出現(xiàn)對話,大哥狂笑:"
n-the SocialBro 社會大哥
II knew it! You were a C agent!
哼,我就知道你是C組織的奸細!
n-the SocialBro 社會大哥
Naive child, you didn’t realize what I gave you was fake, did you?
小子,你沒想到我給你的東西是假的吧?
n-the SocialBro 社會大哥
Now let’s see where you’re going
這下看你往哪跑!
———————————————————————————————————————
倒計時3,2,1,開始跑酷,玩家出生點NewBirthPlace 掛著和大哥的以上對話腳本和碰撞體Box Collider
系統(tǒng)提示:你現(xiàn)在正在被大哥追殺,需要跑回自己組織的勢力范圍。
進入碰撞體:成功逃離但是任務(wù)失敗
出口的設(shè)置地點有些變動,詳見HandOver交付文檔
文檔里面大概在這個位置:
如果中途被敵人追上,就是顯示已被敵人擊殺
摩托車生命值少于百分之20提示玩家需要充電
死法:任務(wù)失敗或者中途摩托車沒電被追上了
———————————————————————————————————————
路人情報對話:
Passby1:
n-passers-by 路人
Boy, I’m lost. Do you know how to get to the National Gourmet restaurant?
小伙子,我迷路了,請問你知道國家美食餐廳怎么走嗎?
n-you 你
It’s easy. Just turn left and go straight for 50 meters.
很簡單,您只需要向左轉(zhuǎn)然后直走50米就到啦!
n-passers-by 路人
Thank you so much! I was going to a party, and I heard that all the bigwigs of this town like to party there!
太謝謝了!我是去赴宴的,本市黑白兩道的大人物都喜歡在那里聚會!
———————————————————————————————————————
Passby2:
n-passers-by 路人
What, another delivery guy?
怎么,又一個送外賣的?
n-you 你
?
n-passers-by 路人
I have no regard for you errand boys, only god knows who you are secretly working for!
我可瞧不上你們這幫跑腿的,鬼知道你們背地里都給誰當(dāng)狗腿子!
n-you 你
Well, I guess this gentleman’s parents didn’t teach him to respect other people’s work!
好吧,看來這位先生的家長并沒教過他要尊重別人的工作!
**
糾錯文檔
**
**
最強外賣員糾錯文檔The strongest delivery man:error correction document
本文檔用以記錄開發(fā)過程當(dāng)中遇到的所有錯誤以及解決辦法
**
This document is used to document all errors encountered during development and how to resolve them
1在測試任務(wù)系統(tǒng)時,意外發(fā)現(xiàn)部分UI顏色、透明度等屬性消失
如圖,在BUG出現(xiàn)時,圖中所有UI有字的地方全部變成了純黑色,Panel的透明度設(shè)置也消失。整個UI帶顏色的部分就是一片死黑
解決辦法:1.重新運行,2.如果重新運行不行的話整個項目關(guān)了重新啟動,之后啥都正常了
Unity項目老不好,多半是欠重開和刪檔
(圖片是跟著網(wǎng)課學(xué)的測試項目)
2.Unity項目打不開,一打開就卡回hub界面
解決辦法:強行退出hub,重開,發(fā)現(xiàn)提示準(zhǔn)可證不合要求,去管理準(zhǔn)可證發(fā)現(xiàn)是沒登錄,應(yīng)該是之前重啟電腦更新,hub被自動退出了,重新登錄hub,成功打開。
參考文檔:
【Unity 之 關(guān)于UnityHub無法打開項目的問題(彈出Unity啟動界面有退回到Hub選擇工程界面)】https://mbd.baidu.com/ma/s/Vq1tL3tL
基本上所有的問題這里面都涉及了。
3.使用CreateAssetMenu通過CreateAssetMenu為使用自定義資源(.asset) 添加 Assets 菜單按鈕時發(fā)現(xiàn)無法創(chuàng)建
檢查腳本,發(fā)現(xiàn)類別繼承錯誤,不能繼承MonoBehaviour類,應(yīng)該繼承ScriptableObject 類
相關(guān)知識:
Unity 通過CreateAssetMenu為使用自定義資源(.asset) 添加 Assets 菜單按鈕_LixiSchool的博客-CSDN博客_createassetmenu unity
更正繼承類別之后,問題解決。
4.UI的scrollbar 無法滑動到底部,而且UI無法穩(wěn)定在調(diào)好的大小
解決辦法:scrollbar以及handle都不要用圓形的UI,用長條形的
目前slider沒問題,如果不行的話參考這條的解決辦法
5.導(dǎo)入購買的模型素材之后,運行模式無動畫播放
解決辦法:檢查發(fā)現(xiàn)模型缺少avatar組件,在模型預(yù)制體的inspector界面選中rig—avatar Definition,create from this model,生成avatar組件,然后賦給模型身上自己創(chuàng)建的動畫狀態(tài)機,并且把模型動畫拖入狀態(tài)機,再運行即可看見模型動畫。
(模型是淘寶素材店買的)
3dmax 動作導(dǎo)出到unity里會有個avatar 怎么去掉它? - 知乎 (zhihu.com)
在最后一步換個選項選擇,這個教程是教怎么移除avatar組件的,而我是需要生成avatar組件。
6.使用NavMeshAgent組件時,報錯Stop()函數(shù)已過時
附錄:一個關(guān)于導(dǎo)航網(wǎng)格代理的不錯網(wǎng)課:
零基礎(chǔ)學(xué)Unity教程之導(dǎo)航系統(tǒng)的建立(完整版)從零開始制作游戲角色和導(dǎo)航系統(tǒng) 一學(xué)就會 U3D/Unity/游戲制作/導(dǎo)航 B0096_嗶哩嗶哩_bilibili
7.切換場景不銷毀物體的辦法:
給導(dǎo)航網(wǎng)格添加障礙物,不希望玩家穿過場景當(dāng)中的某些東西尋路
靜止物體:地形類型選用Not Walkable
移動物體:使用Nav Mesh Obstacle組件,勾選Carve選項在導(dǎo)航網(wǎng)格上掏出一個洞,Center和Size調(diào)節(jié)偏移尺寸,Shape選形狀(圓形、方形—)
8.對話系統(tǒng)播放第一個字就沒有然后了
解決辦法:經(jīng)過檢查,發(fā)現(xiàn)是開啟對話系統(tǒng)之后暫停的功能惹的禍,可能是暫停游戲?qū)е铝藚f(xié)程停止和動畫不能播放,把這行代碼去掉之后問題解決,并且任何代碼都不能寫暫停對話系統(tǒng)
9.拿外賣的角色到達銷毀地點之后并沒有銷毀自己,而是繼續(xù)原地維持行走狀態(tài)
解決辦法:對比黑幫大哥的腳本,這個GotoDestination函數(shù)要在Update里面每幀調(diào)用,這樣才能保證isArrive()函數(shù)每幀都在判斷是否玩家到達了既定地點,然后才能執(zhí)行為true的操作,不然只調(diào)用一次GoToDestination的話,雖然NPC最后到達了銷毀地點,但是IsArrived始終是False,所以他不會停下行走動畫,也不會銷毀自身
修改代碼以后,問題解決:
10.不兼容游戲自設(shè)的快捷鍵按E對話,也不允許運行模式下按ESC出去更改參數(shù):快捷鍵不兼容,更換成冷門不容易沖突的M鍵,不用按ESC,把鼠標(biāo)硬拽出去,在旁邊的場景下點一下即可
移除對話圖標(biāo)(NPC子物體)時遇到代碼報錯:
11.因為場景過大,跳轉(zhuǎn)場景時卡死無法運行
解決辦法:移除另一個場景的攝像機和缺少腳本等一切報錯組件,拖拽成為一個大型預(yù)制體嵌入初始場景內(nèi),避免場景跳轉(zhuǎn)造成卡頓。
12.跳轉(zhuǎn)到廢土場景時,玩家閃爍一下到達目的地,然后被卡在距離原位有一段距離的墻里面
猜測原因:
因為倆套模型的拼接,nav導(dǎo)航系統(tǒng)并沒有連起來,導(dǎo)致玩家到不了那個地點從而被打回了原nav能到達的最遠處
使用了現(xiàn)炒現(xiàn)賣現(xiàn)學(xué)現(xiàn)用的OffMeshLink,把Nav的跳躍距離和水平跨度都拉大,把中間缺失的路復(fù)制預(yù)制體補平,都不行。
截止目前我已經(jīng)十分確定,這就是那個大樓搞得事情,那個路線規(guī)劃都劃到從樓頂上一躍而下了啊!
此圖沒有截,喊我撤回很不容易對勁的Nav去給這個礙事的大樓一個特寫?不可能!絕對不可能!
本來打算當(dāng)穿山甲拆條路出來,但是因為這個場景的模型是一體的,沒有辦法,我只能強拆了一棟樓。
這下沒事了,看吧,我就說我的腳本沒問題,哈哈。
我打算從周邊挪一些用不著的樓來美化一下這個空缺,瞧瞧,為了這個礙事的樓,Nav和主角的犧牲多么大啊,這都可以隨便找個地兒落地成盒了。
就這樣吧,有點擠,但是玩家過得了(微笑)
妙啊!!
15在實現(xiàn)長按充電的時候受到了困惑,不知道怎么寫長按的代碼,經(jīng)過百度、B站、CSDN的搜刮,最后偶然看見下面這個帖子:
Unity的GetKey()、GetKeyDown()以及GetKeyUp()區(qū)別與用法_顫抖的小學(xué)弟的博客-CSDN博客_getkey
把GetKeyDown改為GetKey,問題解決
16.制作路人隨機行走功能時,發(fā)現(xiàn)CheckDir(檢測距離)和CheckAngle(檢測角度)這兩個變量賦值失敗,雖然定義時寫了默認(rèn)值,也在初始化函數(shù)里面調(diào)用了賦值函數(shù),但是Inspector面板里面還是都是0
解決辦法:在每個Inspector面板里面手動賦值,問題解決,而且就這么來了一趟,所有的都好了,就很奇妙
17.因為所有隨機行走人員身上都是一模一樣的腳本,用Random.Range產(chǎn)生的隨機數(shù)也是一模一樣,導(dǎo)致他們一運行所有人都往同一個地方走,不夠隨機真實。
解決辦法:經(jīng)過百度,找到了產(chǎn)生每次不一樣隨機數(shù)的辦法:
Unity使用Random每次生成與上次不一致的隨機數(shù)_游在雨城的博客-CSDN博客_unity 隨機數(shù)
經(jīng)過自行修改,封裝為函數(shù)以后,實現(xiàn)功能。
public int GetRangeNum()//得到每次不一樣的隨機數(shù),避免路人都往一個地方走
{
//最后輸出的與上次隨機數(shù)不同的隨機數(shù)
int getRangeNum = 0;
//每次隨機產(chǎn)生的隨機數(shù),用于與上次進行比較
int rangeRadomNum = 0;
//用于統(tǒng)計每次輸出的數(shù),方便觀察
//int numCount = 0;
//numCount++;
do
{
rangeRadomNum = Random.Range(0, directPoints.Length);//產(chǎn)生0-目的地數(shù)組長度之內(nèi)的隨機數(shù)
}
while (getRangeNum == rangeRadomNum);//只要當(dāng)前得到的數(shù)和上次得到的數(shù)一樣就繼續(xù)執(zhí)行
getRangeNum = rangeRadomNum;//把最后得到的這個不一樣的數(shù)保存下來并且返回回去
//Debug.Log(“第” + numCount.ToString() + “得到的隨機數(shù):” + getRangeNum);
return getRangeNum;
}
”我們各奔東西,大家都有光明的未來“:
18.運行模式下無法拖動人物改變位置,檢查nav無問題
解決辦法:拖動人物一定要拖到最外層級,不要拖成了里面的某一個子物體,這不是nav的問題
19.不明原因報錯,點不開具體寫的是哪段代碼的毛病:
這種莫名其妙的毛病一般都是Unity自己抽風(fēng)卡出來的,關(guān)了重開就行了
20.導(dǎo)入汽車模型之后,測試運行發(fā)現(xiàn)模型往下掉
嚇得我趕緊上網(wǎng)搜了個教程看看:
Unity物體往下掉 如何站在地面上_劉建杰的博客-CSDN博客_unity穿過地形往下掉
我一看這也沒勾選啊,整不會了都
那就手動找找問題吧,看了一下掉的最厲害的四個輪子,我不理解,你說他把use gravity用上干啥?
把重力取消了,測試項目里面倒好了
可是正式項目里面他還是往下掉!!!
沒辦法,我只能再去查個教程
https://mbd.baidu.com/ma/s/WjcWWkbv
跟上一個教程說的正好相反····:
但是勾選之后真的不掉下去了耶!
等等,只是車身不掉下去了,那幾個輪子動畫一播放還是照樣該掉不誤。
搞生氣了,之間給他剛體組件移除了!
可算是不掉了,動畫也正常了,可把我累的······
21.動畫狀態(tài)機報錯AnimationEvent has no function name specified!
Unity3D “xx AnimationEvent has no function name specified!”解決方案_Emperor_Dandy的博客-CSDN博客
這個是添加Event的
這個才是我們要的添加關(guān)鍵幀的
22.一個奇怪的錯誤,不知道為什么運行模式下發(fā)現(xiàn)UI畫布跑到了場景中間,試圖把整個場景物體拖拽到UI后面,發(fā)現(xiàn)就不是初始運行那個漂亮的景象了,所以我猜測讓UI跑這里是作者為了一運行就這個景色有意為之(估計是固定的Camera的位置?因為我們的項目需要定位在主角附近所以這里可以隨便改)
不知道為什么會出現(xiàn)這種靈車漂移慘案:
解決辦法:經(jīng)過檢查,發(fā)現(xiàn)應(yīng)該是誤觸了Nav Mesh Agent的如下屬性:
跑酷的另一條路Nav尋路無法到達
一個并沒有解決問題但是以后可能用得著的鏈接:
Unity學(xué)習(xí)筆記–解決NavMeshAgent無法到達的點_就一枚小白的博客-CSDN博客
Unity-導(dǎo)航網(wǎng)格鏈接 (NavMesh Link)
23.如圖所示,在通往錯誤出口的這條路上Nav不知道什么原因無法烘焙,始終不愿意相連
解決辦法:如果確實無法調(diào)整Nav適應(yīng)的話,可能只好考慮禁用玩家身上的Nav Mesh Agent
24.不知道怎么實現(xiàn)跑酷開始前倒計時
解決辦法:
Unity中實現(xiàn)倒計時的幾種方式_上班摸魚.的博客-CSDN博客_unity倒計時實現(xiàn)
報錯:Unity 報錯TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD has unfreed allocati
解決:重開,不要看網(wǎng)上的騷操作
解決辦法:
此處刪去空格即可
25.加入Nav障礙物的步驟:
(2條消息) unity-Navigation尋路-添加障礙物Obstacle_蝶泳奈何橋.的博客-CSDN博客
沒有動畫狀態(tài)機的物體掛上需要調(diào)用狀態(tài)機的腳本報錯
解決辦法:創(chuàng)建空狀態(tài)機,隨便建立幾個空狀態(tài),把觸發(fā)條件一律都寫上,這樣就不會報錯,也沒有什么影響。
總結(jié)
以上是生活随笔為你收集整理的Unity小组工程实践项目《最强外卖员》策划案纠错文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下dig命令使用
- 下一篇: 【历史上的今天】11 月 29 日:世界