RE:ADV

UnityでADVを作るブログ

TyranoScriptの変数はJavaScriptオブジェクトだったのでオブジェクトリテラルや配列リテラルで設定できるという理解#再

(一回書いたと思ったお題が跡形もなく消え去っていた…)

TyranoScriptの変数についてはこちらのページをとりあえず参照していくtyrano.wiki.fc2.com

minifyされたjavascriptはSublimeTextのBeautifyプラグインで整形して読もう
整形前
f:id:aktaat:20151031113448p:plain
整形後
f:id:aktaat:20151031113454p:plain


こちらのテキストをfirst.ksに張り付けると動作します。

;コメントアウト
*start

Tyranoscriptの変数では、オブジェクトリテラルと配列リテラルを使うことができます![l][r]

以下をiscript/endscriptタグを用いて入力します。[l][r]
([]は半角で読み替えてね。←タグをエスケープする方法がわかんなかった)[l][r]
f.ppp={
	placeA:{name:"sibuya",reiki:100,item:"room-card",[r]
	    _line:[metro-ginza","metro-hanzomon"]},[l][r]
	placeB:{name:"akihabara",reiki:120,item:"radio",[r]
	    _line:[musashino-line","yamanote-line"]},[l][r]
	placeC:[{name:"nihonbashi"},{reiki:90},[r]
	{item:"master-key"}]}[l][r]


;実際にオブジェクトを設定しているところ
[iscript]

f.ppp={
	placeA:{name:"shibuya",reiki:100,item:"room-card",
	line:["metro-ginza","metro-hanzomon"]},
	placeB:{name:"akihabara",reiki:120,item:"radio",
	line:["musashino-line","yamanote-line"]},
	placeC:[{name:"nihonbashi"},{reiki:90},{item:"master-key"}]
}

[endscript]

[cm]
では設定したオブジェクトにアクセスしてみます。[l][r]
placeA.name:[emb exp="f.ppp.placeA.name"][r]
ドットでつないでオブジェクトのプロパティを得るパターン[r]
placeB.item:[emb exp="f.ppp['placeB']['item']"][r]
['']でオブジェクトを指定していくパターン[r]
placeA.line:[emb exp="f.ppp.placeA.line[0]"][r]
配列リテラルへのインデックスでのアクセス[r]
placeC.reiki:[emb exp="f.ppp.placeC[1].reiki"][r]
オブジェクトの配列にアクセスすることもできる。[r]
(そのあとオブジェクトの名前を指定することでプロパティを得ています)。[r]
[l]
[cm]

表示はこんな感じになります。[r]
placeA.name:[emb exp="f.ppp.placeA.name"][r]
placeB.item:[emb exp="f.ppp['placeB']['item']"][r]
placeA.line:[emb exp="f.ppp.placeA.line[0]"][r]
placeC.reiki:[emb exp="f.ppp.placeC[1].reiki"][r]

実際に動かした画面
f:id:aktaat:20151121095315p:plainf:id:aktaat:20151121095333p:plainf:id:aktaat:20151121095338p:plain

オブジェクトの設定と
([iscript][endscript]タグで囲う)

f.ppp={
placeA:{name:"shibuya",reiki:100,item:"room-card",
line:["metro-ginza","metro-hanzomon"]},
placeB:{name:"akihabara",reiki:120,item:"radio",
line:["musashino-line","yamanote-line"]},
placeC:[{name:"nihonbashi"},{reiki:90},{item:"master-key"}]
}

オブジェクトやプロパティ(値)の取得
placeA.name:[emb exp="f.ppp.placeA.name"][r]
placeB.item:[emb exp="f.ppp['placeB']['item']"][r]
placeA.line:[emb exp="f.ppp.placeA.line[0]"][r]
placeC.reiki:[emb exp="f.ppp.placeC[1].reiki"][r]


この両方をペアで覚えておくと便利です。