使用Xnode制作可視化劇本編輯插件(1)

(本文作者 @對(duì)馬騎馬使用炎拳 )
大家好,我是炎拳。
本來(lái)還原星露谷的第三篇,受到 @陳虹松老師的啟發(fā),希望能做一個(gè)方便文字劇情和過(guò)場(chǎng)動(dòng)畫結(jié)合的小工具。
但機(jī)緣巧合之下,我發(fā)現(xiàn)了一款開(kāi)源的可視化節(jié)點(diǎn)插件:X Node, 這是個(gè)非常強(qiáng)大且直觀的節(jié)點(diǎn)編輯器框架,提供了類似 Shader Graph等Unity內(nèi)置系統(tǒng)的Graph和Node的自定義創(chuàng)建。
于是經(jīng)歷的漫長(zhǎng)的探索后,最終借助Xnode ,我完成了一個(gè)可視化的劇本編輯插件,并配合TimeLine,邀請(qǐng)星露谷中的居民擔(dān)當(dāng)演員,簡(jiǎn)單還原了漫畫《電鋸人》中我很喜歡的篇章《失戀,花,電鋸》,成品在這里:

這張Gif圖簡(jiǎn)單的展示了其中的功能:

再來(lái)介紹下這個(gè)插件,首先這個(gè)插件主打的就是在Unity中直接撰寫劇本,你可以直接新建一個(gè)DialogueGraph,新建一個(gè)Chat節(jié)點(diǎn),直接在其中撰寫對(duì)話;
并輕松選擇人物圖片和這段臺(tái)詞所對(duì)應(yīng)的UI效果(基于Dotween,目前還未添加更多)。

需要玩家進(jìn)行選擇決定之后劇情,同樣只需要添加Option節(jié)點(diǎn),寫好選項(xiàng):

如果需要對(duì)話框暫時(shí)消失,你可以選擇“pause”節(jié)點(diǎn)并輸入你希望暫停的時(shí)間;如果需要觸發(fā)一個(gè)方法,你可以選擇“C Event”并輸入在PlayDialogueGraph中注冊(cè)好的方法名,之后玩家點(diǎn)擊到這里就會(huì)自動(dòng)調(diào)用后,進(jìn)入下一項(xiàng)。

目前插件還有很多不足,比如對(duì)Timeline的控制是雙向的,使用起來(lái)很不方便,后面控制的方式應(yīng)該會(huì)改成Timeline對(duì)這種Graph的單向控制。再比如Xnode Graph采用的渲染方式還是來(lái)自于Unity的EditorWindow。而其中管理窗口元素渲染的OnGUI()會(huì)在鼠標(biāo)移動(dòng)的時(shí)候強(qiáng)制刷新,而Graph內(nèi)的每個(gè)單獨(dú)的Node也會(huì)調(diào)用OnGUI()刷新,所以實(shí)際刷新的次數(shù)非??植?,進(jìn)而導(dǎo)致Graph卡頓 ,所以當(dāng)對(duì)話列表較長(zhǎng)時(shí)需要縮小來(lái)保證流暢。
這個(gè)問(wèn)題有人在git上提交給了X node 作者,但貌似作者也沒(méi)有很好的解決方案,如果有大佬有辦法請(qǐng)務(wù)必評(píng)論區(qū)留言,或者直接在這解答:
https://github.com/Siccity/xNode/issues/125
接下來(lái)的文章我會(huì)分享一部分在開(kāi)發(fā)過(guò)程中遇到的坑,以及利用X node的使用教程,我已經(jīng)把工具的示例工程上傳,里面也有一份簡(jiǎn)單說(shuō)明。

Github工程:
https://github.com/ydwj/StoryEditor
覺(jué)得太大了,可以直接下載這個(gè)UnityPackage導(dǎo)入就可以了,可能會(huì)報(bào)錯(cuò)沒(méi)編譯完,親測(cè)重啟下Unity就好了:
鏈接:https://pan.baidu.com/s/1IFdKGAIYf_fRVwCIQgQuZQ
提取碼:bzuf
文章最后,特別感謝 @goodorc_gamedev 馬老師,最初插件的設(shè)計(jì)思路就是馬老師的,并且之后迭代中也指出了很多不足,幫俺解決了大BUG。同時(shí)感謝“深空愛(ài)吃肉包兒”在機(jī)核網(wǎng)分享的,同樣基于X node制作 的playtext的制作思路文章,給了我很大啟發(fā),期待你的游戲~
歡迎加入游戲開(kāi)發(fā)群歡樂(lè)攪基:1082025059
對(duì)游戲開(kāi)發(fā)感興趣的童鞋可戳這里進(jìn)一步了解:http://www.levelpp.com/
我們的公眾號(hào):“皮皮關(guān)"
B站:“皮皮關(guān)做游戲”