- 用<story> </story> 開頭、收尾。
非tag以外內容需要出現<>, 則加上 \ (跳脫符號) 在<>前。 (我regex能力的最大限了)5/22更新:比較符號「<>=」現在不用加上跳脫符號了。
例如<l > \<color=red\> Red content text! \</color\> </l>
<l> </l>
"l" 代表每一個對話。
<if> </if>
達成條件才會進行裡面的內容。 temp_a、temp_b是自定義變數,下面會說怎麼設定。範例:
<if (temp_a ==1)||(temp_a ==1)></if><if (temp_a<=1) && (temp_b==2) && (temp_b\>=2) && (temp_a!=1)><if(temp_a ==1)></if>
<Select> </Select>
創建選單,只能搭配<opt></opt>的tag。 set是設定變數用的,可以不加。
範例:<select> <opt set("opt"=1) > dialog content </opt> <opt set("opt"=2) > dialog content2 </opt> </select>
animation
尋找場上的物件名稱為"gameobjectName"的物件,並播放動畫名稱為"clipName"的動畫,範例:
animation(gameobjectName,clipName)
audio
尋找場上的物件名稱為"gameobjectName"的物件,並設定該AudioSource的狀態。範例:audio(gameobjectName, stop) audio(gameobjectName, play) audio(gameobjectName, pause)
title
對話框的標題。
範例:
title ="Jack"
by
如果對話框是浮在物件上的風格,用by="物件名稱"找尋該物件。
範例:
by ="gameobjectname"
img
如果對話框是像galgame那樣固定畫面的,我預設有分左、中、右,3個image欄位。圖片要放在Resources資料夾下。 left/ middle/ right是在prefab裡面指定的。範例:img(left,"圖片路徑")img(middle,'img2')img(right,/imgfolder/img1)
set
設定變數。若是"temp_"開頭的,會放在暫存的字典裡,對話結束就清除,方便用來做一些無關緊要的選擇性對話。 反之變數會存在整個遊戲(static),但遊戲關掉就沒了,所以請記得處理RPGCore.cs 裡面的StoryRecord存讀取。可以用我這個存讀檔的腳本(字典不能存json,只能存bin)。範例:set(" temp_a"=1)set("temp_a"= "temp_b")set("temp_a"="temp_b" + "temp_a")
$[]
讀取自訂變數。 例如 $[temp_a]。
下面這個範例兩者是一樣的,
<select>
<opt set("temp_a"="temp_b") > set temp_a= b</opt>
<opt set("temp_a"=$[temp_c]) > set temp_a= c </opt>
</select>
但若要在對話內容裡讀取變數的值請用後者,例如:
<l> temp_a = $[temp_a]</l>
enable / disable( obj1,obj2,obj3.....)
其他
想擴充自己的標記的話,請照著這個格式:functionName( arg1, arg2 ,arg3,arg4.......)在StoryReader.cs裡面的ReadArgs()方法裡有個標註 YOUR OWN SCRIPT FUNCTION 的地方處理。arg在一行內可以加很多個,例如:
- RPGCore主要放Regex和方法,不用實作。要新增語言請找到public enum Lang。然後在Resources資料夾下新增個對應名稱的資料夾。
- StoryReader 主要處理arg和tag解讀與和UI的互動,放在對話框prefab。用StartConversation()開始對話。
- OptionButton 選像按鈕prefab裡面,單純回傳告知StoryReader 選擇了什麼。只有一個click方法呼叫 StoryReader.ReturnInput(gameObject.name);
- 我多個StoryTrigger.cs是用來觸發對話的。
目前就這樣,還有些小bug和擴充的內容待加強。