Recrit
【Hiyu&Rava】常用KAG函式介紹1 - 文字篇(上)
在前面的章節中提到過,吉里吉里是一款以腳本語法來開發遊戲的軟體,
這也意味著吉里吉里本身沒有協作介面可以使用,
使用者必須以編寫腳本文件的方式來製作遊戲;
即是透過腳本的指令,來促使各個圖層動作。
圖層基本上分成兩種,分別是一般圖層(Layer)以及文字圖層(Message Layer),
一般圖層專門用於放置圖像,而文字圖層則用於顯示文字以及擺設按鈕,
實際上兩者的功能是可以互通的,酌看使用者是否有這個需要。
其中,文字圖層又尤為重要,
因此本次教學會先從文字圖層的各個基本功能介紹起。
在此之前,先談一下該從哪個地方開始寫入腳本:
在架構好遊戲的資料夾後,腳本文件通常會統一存放在 data/scenario 資料夾中,
事實上,只要資料存在於 data 中,系統讀取時必然不會忽略它,
這麼做的原因在於整齊美觀,以及同名稱時,讀取優先序的問題,
有關優先序的設定,可以在 data/system/initialize.tjs 中調整。
系統設定上,吉里吉里會從 first.ks 這個名稱開始讀入腳本,
因此,請從這個腳本開始寫程式。
另外,除了 first.ks ,吉里吉里也會先讀取 macro.ks 的內容,
一般會將函式巨集集中寫在這個腳本中。
打開這個腳本後,可以嘗試鍵入一些文字,
純文字的部份會以預設的字體設定顯示在文字圖層中,如以下腳本:
範例
所呈現的效果為下:
在普通版本的情況下,
文字顯示時並不會讀到換行字元,
也就是說在打以下腳本時:
範
例
所呈現的依然會是上張畫面的內容。
文字設定
在 Config.tjs 中預設字體與文字圖層的各個設定,
或是直接透過預設指令來修改當前的設定:
deffont 設定當前的字體
face 字體名稱
size 文字大小 ( 單位為pixel )
color 顏色 ( 0xRRGGBB 格式 )
rubysize 注釋字大小 ( 單位為pixel )
rubyoffset 注釋字位置 ( 單位為pixel )
shadow 陰影 ( true / false )
shadowcolor 陰影顏色 ( 0xRRGGBB 格式 )
edge 邊緣 ( true / false )
edgecolor 邊緣顏色 ( 0xRRGGBB 格式 )
bold 粗體 ( true / false )
defstyle 設定當前的文字間距
linespacing 行間距 ( 單位為pixel )
pitch 字間位移 ( 單位為pixel )
linesize 預約大小 ( 單位為pixel )
delay 設定文字顯示速度
speed 顯示速度
配合使用 resetfont 或 resetstyle 等函式才會對 current (目前使用的)圖層生效。
參考範例
[deffont size=50 shadow=true shadowcolor=0xff0000]
[resetfont]
範例
另外,也有暫時變更設定的指令可以使用,
和 def 指令不同的是,
在圖層進行動作(例如 resetfont (resetstyle) / cm / er / ct)後即會失去效力:
font 設定文字字體
face 文字大小 ( 單位為pixel )
size 字體名稱
color 顏色 ( 0xRRGGBB 格式 )
rubysize 注釋字大小 ( 單位為pixel )
rubyoffset 注釋字位置 ( 單位為pixel )
shadow 陰影 ( true / false )
shadowcolor 陰影顏色 ( 0xRRGGBB 格式 )
edge 邊緣 ( true / false )
edgecolor 邊緣顏色 ( 0xRRGGBB 格式 )
bold 粗體 ( true / false )
style 設定文字間距
align 對齊設定 ( left / top / center / right / bottom / default )
linespacing 行間距 ( 單位為pixel )
pitch 字間位移 ( 單位為pixel )
linesize 預約大小 ( 單位為pixel )
autoreturn 自動換行換頁 ( true / false )
以下為範例腳本及其效果:
[font size=100 color=0xff0000]
範例
;在圖層動作後,會失去效力:
[font size=50 shadow=true shadowcolor=0xff0000]
[er]
範例
有關字體指令的進一步說明請參照 KAG 的 Reference 。
文字顯示操作
在編寫劇情時,難免會用上換行、清空訊息、顯示變數等等的功能,
這些功能在 KAG 中都可以找到對應的指令:
l 等待點擊
r 換行
cm 換頁
p 換頁同時等待點擊
er 清空目前文字圖層所顯示的內容
nowait 將之後的文字一次顯示出來直到 endnowait 指令出現為止
endnowait 用於終止 nowait 指令
emb 顯示變數內容
exp TJS式
在寫入 [l] 時,等待處會顯示預設的等待鍵 ( 倒三角形 ) ;
而在寫入 [p] 時,則會顯示預設的換頁鍵 (頂端朝右的三角形) 。
因此在劇本要換行等待時,通常 [l][r] 會連著寫,
而換頁等待時, [p] 會單獨存在,不過寫成 [p][cm] 也可。
[emb exp=" "] 則是當要顯示變數或特殊字串時,在 " " 中填入相關的內容用。
另外, " " 中也可以填入一般的字串,效果等同於純文字顯示,
該用法會在 [cond] 、 [if] 等指令時用上,
有關 TJS式 的部分,在日後講到變數時會有清楚的解說。
以下為各個指令依序所產生的效果:
等待點擊[l]換行[r]換頁[p]
[nowait]這裡會一次顯示出來[endnowait]
[er]
1)等待點擊
2)換行與換頁
3)[nowait] 指令使上圖直接變成這張,文字會即時出現
4)[er] 消去所有文字
以下兩者為顯示一般字串與變數的用法
;1
[emb exp="'範例'"]
;2
[eval exp="'f.samle='範例''"]
[emb exp="f.sample"]
清除文字圖層
主要用來清除文字圖層的指令有三種。
分別是 cm、ct 和 er。
其中兩種在前面已經提到過了,
事實上,這三種指令都可以用來當作換頁功能。
使用這些指令後, postion 和 lapout 屬性並不會受到影響。
(以下的.為共通點,x為相異點)
cm
.清除所有文字圖層
.清除所有文字圖層的 font 和 style 的設定
.操作對象維持目前使用中的文字圖層
ct
.清除所有文字圖層
.清除所有文字圖層的 font 和 style 的設定
x操作對象變成 message0
er
x清除當前文字圖層
x清除當前文字圖層的 font 和 style 的設定
.操作對象維持當前使用中的文字圖層
基本上只使用 message0 (預設的文字圖層)的話,就不用在意使用哪個指令。
但使用兩個或以上的文字圖層,就得注意想清除的是哪個文字圖層。
この記事にコメントする
この記事へのトラックバック
- この記事にトラックバックする