本發(fā)明涉及游戲配置編輯領(lǐng)域,尤其涉及一種可視化的配置編輯方法及裝置。
背景技術(shù):
為了滿足玩家的娛樂(lè)需求,在游戲中會(huì)實(shí)現(xiàn)大量的玩法模塊,而這些模塊又各有自己的功能。通常,游戲設(shè)計(jì)人員在設(shè)計(jì)某一項(xiàng)功能的時(shí)候,并不會(huì)把功能描述成固定的形式,而會(huì)把功能中可變的參數(shù)寫到配置文件中。程序人員在實(shí)現(xiàn)功能的時(shí)候,設(shè)計(jì)人員可以不斷的調(diào)整這些參數(shù),讓功能達(dá)到自己期望的程度。
有些功能要求更復(fù)雜的配置格式,比如技能系統(tǒng)或是AI系統(tǒng),它們需要大量的參數(shù)和語(yǔ)句來(lái)描述一個(gè)技能是怎么執(zhí)行的。這通常是設(shè)計(jì)成一種約定好格式的配置文件,比如用Json設(shè)計(jì)好技能的配置格式,程序人員再依據(jù)這些格式去實(shí)現(xiàn)。但設(shè)計(jì)人員怎么編輯這些配置成為了一個(gè)重要的問(wèn)題。
在現(xiàn)有技術(shù)中,通常有下面幾種方法去編輯比較復(fù)雜的配置:1、使用Excel來(lái)編輯配置,用表格的形式描述功能;2、讓程序人員專門為每種配置編寫可視化的編輯器,比如針對(duì)技能配置,設(shè)計(jì)人員給出一份規(guī)格說(shuō)明書,程序使用一種通用的編程語(yǔ)言,比如C++,Python之類的,實(shí)現(xiàn)出設(shè)計(jì)要求的可視化界面,然后設(shè)計(jì)人員使用這個(gè)界面去編輯技能。3、直接編輯文本格式。例如使用一種支持Json的文本編輯器,設(shè)計(jì)人員直接在上面編輯。
技術(shù)實(shí)現(xiàn)要素:
上述的方法1對(duì)于簡(jiǎn)單的配置是個(gè)不錯(cuò)的選擇,但有些功能配置,例如技能配置是非常復(fù)雜的,用表格很難直觀的描述期望的行為,且通過(guò)表格進(jìn)行描述往往會(huì)顯得很復(fù)雜。而方法2的缺點(diǎn)在于,由于游戲有許多像技能這樣復(fù)雜的配置格式,如果需要對(duì)每個(gè)功能專門編寫編輯器,需要耗費(fèi)大量的人力資源在編輯器的制作上的。另一方面,如果設(shè)計(jì)人員對(duì)配置格式進(jìn)行修改,則程序人員必須同步的修改編輯器以達(dá)到最新的需求,這大大增加了程序人員的個(gè)工作負(fù)擔(dān)。對(duì)于方法3,如果對(duì)配置格式了然于胸,編輯起來(lái)確實(shí)是最直接最快速的,但是文本編輯器只會(huì)依據(jù)Json的規(guī)范檢查語(yǔ)法錯(cuò)誤,而不會(huì)告訴你哪個(gè)參數(shù)寫錯(cuò)了,哪些值超出范圍了,設(shè)計(jì)人員需要花費(fèi)很多精力用于檢查輸入的參數(shù)是否正確,從而造成了時(shí)間的浪費(fèi),并影響了設(shè)計(jì)人員對(duì)真正邏輯的思考,降低了工作效率。
針對(duì)上述問(wèn)題,本發(fā)明的目的在于提供一種可視化的配置編輯方法及裝置,可實(shí)現(xiàn)方便快捷的配置編輯,滿足設(shè)計(jì)人員的需求。
本發(fā)明提供了一種可視化的配置編輯方法,包括:
讀取基于Json Schema描述的原始配置文件,生成具有預(yù)定格式規(guī)范的可視化編輯界面;
監(jiān)聽(tīng)在所述可視化編輯界面的輸入欄中輸入的參數(shù);
根據(jù)所述格式規(guī)范對(duì)輸入到所述輸入欄內(nèi)的參數(shù)進(jìn)行檢查;
當(dāng)輸入的所述參數(shù)符合與其對(duì)應(yīng)的輸入欄定義的格式規(guī)范時(shí),根據(jù)輸入的參數(shù)生成Json配置文件。
上述技術(shù)方案中,通過(guò)讀取基于Json Schema描述的原始配置文件,生成具有預(yù)定格式規(guī)范的可視化編輯界面,并基于所述格式規(guī)范對(duì)設(shè)計(jì)人員輸入的參數(shù)進(jìn)行自動(dòng)檢查,從而保證設(shè)計(jì)人員輸入的參數(shù)是符合格式規(guī)范要求,設(shè)計(jì)人員僅需簡(jiǎn)單進(jìn)行數(shù)據(jù)填寫,而無(wú)需花費(fèi)太多精力用于人工檢查填寫的數(shù)據(jù)的格式、類型或者數(shù)值范圍是否出現(xiàn)錯(cuò)誤,節(jié)省了檢查的時(shí)間,提升了工作的效率。此外,可視化的編輯界面還進(jìn)一步提升了設(shè)計(jì)人員的使用體驗(yàn)和友好度。
優(yōu)選地,在所述當(dāng)輸入的所述參數(shù)符合與其對(duì)應(yīng)的輸入欄定義的格式規(guī)范時(shí),根據(jù)輸入的參數(shù)生成Json配置文件之后,還包括:
將所述Json配置文件轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件。
上述技術(shù)方案中,為了提高游戲加載速度,還將Json配置文件轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件。例如,用python腳本開(kāi)發(fā)的游戲需要把Json配置文件轉(zhuǎn)換成python腳本,從而提高游戲加載速度。
優(yōu)選地,在所述將所述Json配置文件轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件之后,還包括:
在所述可視化編輯界面上顯示所述腳本文件中的代碼。
本優(yōu)選方案還同時(shí)集成了即時(shí)的腳本文件的代碼顯示,設(shè)計(jì)人員在進(jìn)行編輯時(shí),可視化編輯界面會(huì)對(duì)設(shè)計(jì)人員的編輯內(nèi)容進(jìn)行實(shí)時(shí)顯示,對(duì)于熟悉腳本的設(shè)計(jì)人員,實(shí)時(shí)看見(jiàn)編輯結(jié)果可以有效提高工作效率。
優(yōu)選地,所述將所述Json配置文件轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件具體為:
將所述Json配置文件按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的初始腳本文件;
查找所述初始腳本文件中的自定義關(guān)鍵字及與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu);
從預(yù)先配置的自定義解析器中獲取與查找到的所述自定義關(guān)鍵字對(duì)應(yīng)的變換方法,根據(jù)所述變換方法對(duì)與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行變換并刪除所述自定義關(guān)鍵字,生成腳本文件;其中,所述變換方法包括變換所述數(shù)據(jù)結(jié)構(gòu)的類型。
優(yōu)選地,還包括:
獲取所述原始配置文件中的不可變數(shù)組;
當(dāng)所述不可變數(shù)組內(nèi)的元素的個(gè)數(shù)小于預(yù)設(shè)的閾值時(shí),通過(guò)CSS樣式表控制將所述不可變數(shù)組內(nèi)的各個(gè)元素顯示在所述可視化編輯界面的同一顯示欄。
本發(fā)明還提供了一種可視化的配置編輯裝置,包括:
可視化界面生成單元,用于讀取基于Json Schema描述的原始配置文件,生成具有預(yù)定格式規(guī)范的可視化編輯界面;
參數(shù)監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)在所述可視化編輯界面的輸入欄中輸入的參數(shù);
檢查單元,用于根據(jù)所述格式規(guī)范對(duì)輸入到所述輸入欄內(nèi)的參數(shù)進(jìn)行檢查;
配置文件生成單元,用于當(dāng)輸入的所述參數(shù)符合與其對(duì)應(yīng)的輸入欄定義的格式規(guī)范時(shí),根據(jù)輸入的參數(shù)生成Json配置文件。
優(yōu)選地,還包括:
文件轉(zhuǎn)換單元,用于將所述Json配置文件轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件。
優(yōu)選地,還包括:
代碼顯示單元,用于在所述可視化編輯界面上顯示所述腳本文件中的代碼。
優(yōu)選地,所述文件轉(zhuǎn)換單元具體包括:
初始轉(zhuǎn)換模塊,用于將所述Json配置文件按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的初始腳本文件;
關(guān)鍵字查找模塊,用于查找所述初始腳本文件中的自定義關(guān)鍵字及與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu);
變換模塊,用于從預(yù)先配置的自定義解析器中獲取與查找到的所述自定義關(guān)鍵字對(duì)應(yīng)的變換方法,根據(jù)所述變換方法對(duì)與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行變換并刪除所述自定義關(guān)鍵字,生成腳本文件;其中,所述變換方法包括變換所述數(shù)據(jù)結(jié)構(gòu)的類型。
優(yōu)選地,還包括:
不可變數(shù)組獲取單元,用于獲取所述原始配置文件中的不可變數(shù)組;
顯示控制單元,用于當(dāng)所述不可變數(shù)組內(nèi)的元素的個(gè)數(shù)小于預(yù)設(shè)的閾值時(shí),通過(guò)CSS樣式表控制將所述不可變數(shù)組內(nèi)的各個(gè)元素顯示在所述可視化編輯界面的同一顯示欄。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明的技術(shù)方案,下面將對(duì)實(shí)施方式中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施方式,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種可視化的配置編輯方法的流程示意圖。
圖2是本發(fā)明實(shí)施例提供的一種原始配置文件的示意圖。
圖3是本發(fā)明實(shí)施例提供的一種可視化編輯界面的示意圖。
圖4是本發(fā)明實(shí)施例提供的一種原始配置文件中的不可變列表的表示示意圖。
圖5是本發(fā)明實(shí)施例提供的另一種原始配置文件中的不可變列表的表示示意圖。
圖6是本發(fā)明實(shí)施例提供的原始配置文件中的元組的定義示意圖。
圖7是本發(fā)明實(shí)施例提供的原始配置文件中的可變字典的定義示意圖。
圖8是圖7轉(zhuǎn)換為腳本文件后的示意圖。
圖9是本發(fā)明實(shí)施例提供的可視化的配置編輯裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,本發(fā)明實(shí)施例提供了一種可視化的配置編輯方法,其可由可視化的配置編輯裝置(以下簡(jiǎn)稱配置編輯裝置)來(lái)執(zhí)行,并包括如下步驟:
S101,讀取基于Json Schema描述的原始配置文件,生成具有預(yù)定格式規(guī)范的可視化編輯界面。
在本發(fā)明實(shí)施例中,由于目前大多數(shù)的配置文件都是采用Json格式,因此這里的原始配置文件采用Json Schema這種描述語(yǔ)言來(lái)描述。其中,Json Schema也是一種Json格式,它用于描述Json文件的正確格式,并驗(yàn)證其正確性。
例如,如圖2所示,圖2中的基于Json Schema的原始配置文件描述了一個(gè)人的基本屬性,包括名字、年齡和性別。對(duì)于各個(gè)屬性,可以用Json Schema定義其數(shù)據(jù)類型、描述屬性的信息以及設(shè)定屬性的默認(rèn)值等。例如設(shè)定名字的數(shù)據(jù)類型為字符型,最小長(zhǎng)度為4;年齡的數(shù)據(jù)類型為整型,范圍是18~99,性別的數(shù)據(jù)類型為字符型,并且只能選擇male或者female兩個(gè)選項(xiàng)。
請(qǐng)參閱圖3,圖3是所述配置編輯裝置讀取原始配置文件后生成的一種具有格式規(guī)范的可視化編輯界面的示意圖。
S102,監(jiān)聽(tīng)在所述可視化編輯界面的輸入欄中輸入的參數(shù)。
S103,根據(jù)所述格式規(guī)范對(duì)輸入到所述輸入欄內(nèi)的參數(shù)進(jìn)行檢查。
S104,當(dāng)輸入的所述參數(shù)符合與其對(duì)應(yīng)的輸入欄定義的格式規(guī)范時(shí),根據(jù)輸入的參數(shù)生成Json配置文件。
如圖3所示,設(shè)計(jì)人員可以在可視化編輯界面的輸入欄中輸入?yún)?shù)(可以是用戶自行輸入?yún)?shù),也可以是可視化編輯界面提供選項(xiàng)供用戶選擇,具體由原始配置文件決定)。其中,在設(shè)計(jì)人員自行輸入?yún)?shù)后,所述配置編輯裝置會(huì)監(jiān)聽(tīng)用戶在所述可視化編輯界面的輸入欄中輸入的參數(shù),并檢查該輸入的參數(shù)是否符合該輸入欄的格式規(guī)范。例如,如果一個(gè)輸入欄的格式規(guī)范(由原始配置文件的定義決定)是輸入的參數(shù)的數(shù)據(jù)類型為字符型(string),而設(shè)計(jì)人員輸入的參數(shù)的數(shù)據(jù)類型為整型(integer),則所述配置編輯裝置在進(jìn)行檢查時(shí)就會(huì)發(fā)出錯(cuò)誤提醒。再例如,一個(gè)輸入欄的格式規(guī)范是輸入的參數(shù)的數(shù)據(jù)類型為整型,而設(shè)計(jì)人員輸入的參數(shù)的類型為浮點(diǎn)型(float),則所述配置編輯裝置在進(jìn)行檢查時(shí)就會(huì)發(fā)出錯(cuò)誤提醒。再例如,一個(gè)輸入欄的格式規(guī)范是輸入的參數(shù)的數(shù)據(jù)類型為整型,且其范圍為18~50,而設(shè)計(jì)人員輸入的參數(shù)為15,則所述配置編輯裝置在進(jìn)行檢查時(shí)就會(huì)發(fā)出錯(cuò)誤提醒。
綜上所述,本發(fā)明實(shí)施例提供的可視化的配置編輯方法,通過(guò)讀取基于Json Schema描述的原始配置文件,生成具有預(yù)定格式規(guī)范的可視化編輯界面,并基于所述格式規(guī)范對(duì)設(shè)計(jì)人員輸入的參數(shù)進(jìn)行自動(dòng)檢查,從而保證設(shè)計(jì)人員輸入的參數(shù)符合預(yù)先設(shè)置的格式規(guī)范要求,設(shè)計(jì)人員僅需進(jìn)行參數(shù)填寫,如果填寫錯(cuò)誤會(huì)自動(dòng)生成錯(cuò)誤提醒,因而無(wú)需花費(fèi)太多精力用于人工檢查填寫的參數(shù)的格式、類型或者數(shù)值范圍是否出現(xiàn)錯(cuò)誤,節(jié)省了檢查的時(shí)間,提升了工作的效率。此外,可視化的編輯界面還進(jìn)一步提升了設(shè)計(jì)人員的使用體驗(yàn)和友好度。
為了便于對(duì)本發(fā)明的理解,下面將對(duì)本發(fā)明的一些優(yōu)選實(shí)施例做更進(jìn)一步的描述。
第一個(gè)優(yōu)選實(shí)施例:
優(yōu)選地,在步驟S104之后,好包括:
S105,將所述Json配置文件轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件。
在本發(fā)明實(shí)施例中,當(dāng)設(shè)計(jì)人員完成配置的編輯后,會(huì)得到相應(yīng)的Json配置文件,表示該配置的內(nèi)容。為了提高游戲加載速度,所述配置編輯裝置還對(duì)Json配置文件進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件。例如,用python腳本開(kāi)發(fā)的游戲需要把Json配置文件轉(zhuǎn)換成python腳本,從而提高游戲加載速度。
在本發(fā)明實(shí)施例中,以python腳本為例,由于Json和Python的字典比較相像,通過(guò)現(xiàn)有技術(shù)可以很容易將Json配置文件轉(zhuǎn)換成Python代碼的腳本文件。而如果需要轉(zhuǎn)換為其他語(yǔ)言的腳本,只需要根據(jù)其與Json的差別進(jìn)行轉(zhuǎn)換即可,本發(fā)明在此不做贅述。
第二個(gè)優(yōu)選實(shí)施例:
優(yōu)選地,在步驟S105之后,還包括:
S106,在所述可視化編輯界面上顯示所述腳本文件中的代碼。
如圖3所示,本優(yōu)選實(shí)施例還同時(shí)集成了即時(shí)的腳本文件的代碼顯示,設(shè)計(jì)人員在進(jìn)行編輯時(shí),所述配置編輯裝置會(huì)將轉(zhuǎn)換的腳本文件的代碼實(shí)時(shí)顯示在可視化編輯界面上,對(duì)于熟悉腳本的設(shè)計(jì)人員,實(shí)時(shí)看見(jiàn)腳本文件可以有效提高工作效率,并減小bug的出現(xiàn)。
第三個(gè)優(yōu)選實(shí)施例:
優(yōu)選地,還包括:
S107,獲取所述原始配置文件中的不可變數(shù)組。
S108,當(dāng)所述不可變數(shù)組內(nèi)的元素的個(gè)數(shù)小于預(yù)設(shè)的閾值時(shí),通過(guò)CSS樣式表控制將所述不可變數(shù)組內(nèi)的各個(gè)元素顯示在所述可視化編輯界面的同一顯示欄。
目前Json Schema支持的數(shù)據(jù)類型有string,numberic,object,array,boolean,null。但是在游戲開(kāi)發(fā)中,一方面,復(fù)雜的配置往往需要復(fù)雜的數(shù)據(jù)結(jié)構(gòu)進(jìn)行表示;另一方面為,為了優(yōu)化效率,有時(shí)需要用列表或者元組替代字典(object),因此有時(shí)原始配置文件中還包含了對(duì)目前的Json Schema進(jìn)行擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)。則在讀取時(shí),所述配置編輯裝置還需要考慮對(duì)拓展的數(shù)據(jù)結(jié)構(gòu)的處理,其中,增加的數(shù)據(jù)結(jié)構(gòu)可包括不可變列表,元組和可變字典等。
以不可變列表為例,不可變列表用于描述簡(jiǎn)單的屬性集合。例如技能節(jié)點(diǎn)的執(zhí)行參數(shù)由動(dòng)作名和動(dòng)作類型ID組成:'args':['attack_0',111]。Json Schema中的array可以表示列表,但是array是可變的,并且array默認(rèn)其中的每個(gè)元素的類型都是一樣的,難以滿足需求。在此提供兩種不可變列表的表示方法。
第一種方法如圖4所示,array作為基本類型,但是其items是數(shù)組而不是對(duì)象,items中包含的每個(gè)object則是對(duì)應(yīng)不可變列表中的每個(gè)元素,minItems規(guī)定該列表的元素個(gè)數(shù),最后在options中設(shè)定該數(shù)組不可增加元素,這樣就可以得到一個(gè)不可變列表,并且其中每個(gè)元素的類型可以根據(jù)需求設(shè)定。
第二種方法如圖5所示,以object作為基本類型,然后對(duì)于每個(gè)不可變列表中的元素,用一個(gè)object的屬性(properties)表示。屬性的鍵(key)為$i$(1<=i<=n,n為列表元素的個(gè)數(shù)),屬性的值(value)是元素的具體描述,如類型說(shuō)明等。因?yàn)槭遣豢勺兞斜?,因此通過(guò)設(shè)定Json Schema的disable_properties阻止屬性的增加。如果需要控制每個(gè)列表的元素是否是必須的,可以通過(guò)Json Schema的required屬性進(jìn)行設(shè)定。
在本發(fā)明實(shí)施例中,所述配置編輯裝置可對(duì)其可視化編輯界面的顯示樣式進(jìn)行控制,使其更緊湊,提高界面的利用效率,從而更適合用戶的編輯習(xí)慣,提高編輯效率。
具體地,例如,一般情況下,數(shù)組是一行一行分開(kāi)顯示的,而對(duì)應(yīng)本發(fā)明實(shí)施例中,由于大多數(shù)組設(shè)置為不可變數(shù)組,其內(nèi)的元素?cái)?shù)量很少且不需要在擴(kuò)展增加,所以可通過(guò)CSS樣式表控制這些元素在一行顯示欄中顯示即可,這可以使得所述可視化編輯界面的外觀更加緊湊一致,避免了在一些情況下需要對(duì)可視化編輯界面的大小進(jìn)行調(diào)整才能看到全部的內(nèi)容。
第四個(gè)優(yōu)選實(shí)施例:
優(yōu)選地,步驟S105具體包括:
S1051,將所述Json配置文件按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的初始腳本文件。
S1052,查找所述初始腳本文件中的自定義關(guān)鍵字及與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
S1053,從預(yù)先配置的自定義解析器中獲取與查找到的所述自定義關(guān)鍵字對(duì)應(yīng)的變換方法,根據(jù)所述變換方法對(duì)與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行變換并刪除所述自定義關(guān)鍵字,生成腳本文件;其中,所述變換方法包括變換所述數(shù)據(jù)結(jié)構(gòu)的類型。
例如,如果需要在最終生成的python腳本文件中生成元組這種數(shù)據(jù)類型(元組與不可變列表相似,區(qū)別是元組用圓括號(hào)表示,而不可變列表則用方括號(hào)表示),但是元組是python的特有數(shù)據(jù)類型,Json Schema本身并不支持。為了兼容python腳本,可以在原始配置文件中用不可變列表來(lái)表示元組,如圖6所示,通過(guò)設(shè)定了一個(gè)自定義關(guān)鍵字$tuple$來(lái)對(duì)不可變列表和元組進(jìn)行區(qū)分。
在進(jìn)行轉(zhuǎn)換時(shí),首先,將所述Json配置文件按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的初始腳本文件。這個(gè)初始腳本文件中會(huì)包括自定義關(guān)鍵字,然后,查找所述初始腳本文件中的自定義關(guān)鍵字及與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。最后,從預(yù)先配置的自定義解析器中獲取與查找到的所述自定義關(guān)鍵字對(duì)應(yīng)的變換方法,根據(jù)所述變換方法對(duì)與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行變換并刪除所述自定義關(guān)鍵字,生成腳本文件。
以圖6為例,在轉(zhuǎn)換成初始腳本文件后,仍然包含有$tuple$這個(gè)自定義關(guān)鍵字,其在自定義解析器中的變換方法是將與其對(duì)應(yīng)的不可變列表轉(zhuǎn)換成元組。這樣,當(dāng)在初始腳本文件中查找到自定義關(guān)鍵字$tuple$后,就查找與$tuple$對(duì)應(yīng)的不可變列表,然后在最終顯示的腳本文件中將這個(gè)不可變列表變換為元組,并刪除$tuple$這個(gè)自定義關(guān)鍵字。
再例如,可變字典是配置中常用的數(shù)據(jù)結(jié)構(gòu)。圖7所示為當(dāng)關(guān)鍵幀到達(dá)時(shí)觸發(fā)對(duì)應(yīng)的一系列技能節(jié)點(diǎn),用戶增加數(shù)據(jù)時(shí)需要同時(shí)編輯關(guān)鍵幀名字(key)和觸發(fā)的技能列表(value)。在Json Schema中,object用于表示字典,但是當(dāng)需要往object中增加屬性(key)時(shí),難以對(duì)key進(jìn)行規(guī)范說(shuō)明,容易導(dǎo)致用戶輸入不符合規(guī)范的數(shù)據(jù),因此,可設(shè)計(jì)了一個(gè)新的可變字典表示方式,使用Json Schema中的array描述可變字典,對(duì)于字典中的每個(gè)元素,增加了$key$和$value$兩個(gè)自定義關(guān)鍵字來(lái)進(jìn)行描述。此時(shí),轉(zhuǎn)換后的初始腳本文件如圖8所示,包含了$key$和$value$兩個(gè)自定義關(guān)鍵字,在將初始腳本文件轉(zhuǎn)換為最終的腳本文件后,則如圖8所示,將字典變?yōu)榭勺冏值?,并刪除這兩個(gè)自定義關(guān)鍵字。
綜上所述,本優(yōu)選實(shí)施例實(shí)現(xiàn)了對(duì)原始配置文件的擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)的支持和變換,并可將擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為符合腳本文件格式的數(shù)據(jù)結(jié)構(gòu),使得配置的編輯方式更靈活,適用范圍更廣。
請(qǐng)一并參閱圖9,本發(fā)明還提供了一種可視化的配置編輯裝置100,包括:
可視化界面生成單元10,用于讀取基于Json Schema描述的原始配置文件,生成具有預(yù)定格式規(guī)范的可視化編輯界面。
參數(shù)監(jiān)聽(tīng)單元20,用于監(jiān)聽(tīng)在所述可視化編輯界面的輸入欄中輸入的參數(shù)。
檢查單元30,用于根據(jù)所述格式規(guī)范對(duì)輸入到所述輸入欄內(nèi)的參數(shù)進(jìn)行檢查。
配置文件生成單元40,用于當(dāng)輸入的所述參數(shù)符合與其對(duì)應(yīng)的輸入欄定義的格式規(guī)范時(shí),根據(jù)輸入的參數(shù)生成Json配置文件。
本發(fā)明實(shí)施例提供的可視化的配置編輯裝置100,通過(guò)讀取基于Json Schema描述的原始配置文件,生成具有預(yù)定格式規(guī)范的可視化編輯界面,并基于所述格式規(guī)范對(duì)設(shè)計(jì)人員輸入的參數(shù)進(jìn)行自動(dòng)檢查,從而保證設(shè)計(jì)人員輸入的參數(shù)是符合格式規(guī)范要求,設(shè)計(jì)人員僅需簡(jiǎn)單進(jìn)行數(shù)據(jù)填寫,而無(wú)需花費(fèi)太多精力用于人工檢查填寫的數(shù)據(jù)的格式、類型或者數(shù)值范圍是否出現(xiàn)錯(cuò)誤,節(jié)省了檢查的時(shí)間,提升了工作的效率。此外,可視化的編輯界面還進(jìn)一步提升了設(shè)計(jì)人員的使用體驗(yàn)和友好度。
優(yōu)選地,還包括:
文件轉(zhuǎn)換單元50,用于將所述Json配置文件轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的腳本文件。
優(yōu)選地,還包括:
代碼顯示單元60,用于在所述可視化編輯界面上顯示所述腳本文件中的代碼。
優(yōu)選地,所述文件轉(zhuǎn)換單元50具體包括:
初始轉(zhuǎn)換模塊51,用于將所述Json配置文件按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換成與應(yīng)用開(kāi)發(fā)語(yǔ)言對(duì)應(yīng)的初始腳本文件。
關(guān)鍵字查找模塊52,用于查找所述初始腳本文件中的自定義關(guān)鍵字及與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
變換模塊53,用于從預(yù)先配置的自定義解析器中獲取與查找到的所述自定義關(guān)鍵字對(duì)應(yīng)的變換方法,根據(jù)所述變換方法對(duì)與所述自定義關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行變換并刪除所述自定義關(guān)鍵字,生成腳本文件;其中,所述變換方法包括變換所述數(shù)據(jù)結(jié)構(gòu)的類型。
本優(yōu)選實(shí)施例實(shí)現(xiàn)了對(duì)原始配置文件的擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)的支持和變換,并可將擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為符合腳本文件格式的數(shù)據(jù)結(jié)構(gòu),使得配置的編輯方式更靈活,適用范圍更廣。
優(yōu)選地,還包括:
不可變數(shù)組獲取單元70,用于獲取所述原始配置文件中的不可變數(shù)組;
顯示控制單元80,用于當(dāng)所述不可變數(shù)組內(nèi)的元素的個(gè)數(shù)小于預(yù)設(shè)的閾值時(shí),通過(guò)CSS樣式表控制將所述不可變數(shù)組內(nèi)的各個(gè)元素顯示在所述可視化編輯界面的同一顯示欄。
以上所揭露的僅為本發(fā)明一種較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。