メッセージなどの文字列中の式展開プラグイン
Posted: 2016年12月31日(土) 06:54
【このプラグインでできること】
RGSSもといRubyでは、 "10 * 10 = #{ 10*10 }" のように文字列中でコードを評価することができます。
MVでもそれと同じようなことができる関数を定義しました。
ES6からテンプレート文字列というのが実装され、
これと同様のことができるようになったのですが、未対応のブラウザもある模様。
その点これは、テンプレート文字列を使用していないのでどの環境でも使えるはず。
追加した関数を利用して、ツクール中の以下のテキストは
展開用の形式が書かれていれば自動で式展開されるようになります。この形式を文字列に含め、JavaScriptCode の部分にコードを書くだけです。
JavaScriptCodeが展開され、その結果を文字列にします。
例として、自身のイベント名を表示するメッセージです。
(これやるならイベント名に置換される制御文字を増やせばいいなんて思っちゃダメ) 選択肢のテキストにも、展開用の形式を書いておけば同様にゲームに反映されます。
-------------------------------------------------------------------------------------------
スクリプト内で文字列の式展開をする場合は、以下の2通りから展開が可能です。






RGSSもといRubyでは、 "10 * 10 = #{ 10*10 }" のように文字列中でコードを評価することができます。
MVでもそれと同じようなことができる関数を定義しました。
ES6からテンプレート文字列というのが実装され、
これと同様のことができるようになったのですが、未対応のブラウザもある模様。
その点これは、テンプレート文字列を使用していないのでどの環境でも使えるはず。
追加した関数を利用して、ツクール中の以下のテキストは
展開用の形式が書かれていれば自動で式展開されるようになります。
- メッセージのテキスト
- ヘルプウィンドウのテキスト
- 選択肢のテキスト
- プラグインコマンド
コード: 全て選択
${ JavaScriptCode }
JavaScriptCodeが展開され、その結果を文字列にします。
例として、自身のイベント名を表示するメッセージです。
(これやるならイベント名に置換される制御文字を増やせばいいなんて思っちゃダメ) 選択肢のテキストにも、展開用の形式を書いておけば同様にゲームに反映されます。
-------------------------------------------------------------------------------------------
スクリプト内で文字列の式展開をする場合は、以下の2通りから展開が可能です。
コード: 全て選択
// interpolation関数を使用する
var message = '';
message += '現在のマップのIDは ${$gameMap.mapId()}\n';
message += '現在のマップの表示名は ${$gameMap.displayName()} です。';
console.log(message);
// => 現在のマップのIDは ${$gameMap.mapId()}
// 現在のマップの表示名は ${$gameMap.displayName()} です。
console.log(message.interpolation(this));
// => 現在のマップのIDは 1
// 現在のマップの表示名は ダミーマップ です。
コード: 全て選択
// template関数を使用する
var message = '';
message += '現在のマップのIDは ${mapId}\n';
message += '現在のマップの表示名は ${abcdefg} です。';
var values = {};
values['mapId'] = $gameMap.mapId();
values['abcdefg'] = $gameMap.displayName();
console.log(message);
// => 現在のマップのIDは ${mapId}
// 現在のマップの表示名は ${abcdefg} です。
console.log(message.template(values));
// => 現在のマップのIDは 1
// 現在のマップの表示名は ダミーマップ です。





