コンテンツにスキップ

選択肢をいきなり独立した関数で書く

概要

YAYAゴーストスクリプトで、選択肢やアンカーの選択を処理する際に、選択肢の識別子と一致する独立した関数を作成することで、OnChoiceSelect内の条件分岐を省略できるテクニックを紹介します。

コード例

OnChoiceSelect {
    if ISFUNC(reference0) {
        EVAL(reference0)
    }
}

OnAnchorSelect {
    if ISFUNC(reference0) {
        EVAL(reference0)
    }
}

説明

このアプローチにより、\q[]タグや\\_a[]タグで使用する識別子と同名の関数を辞書内に書くだけで、選択肢の処理が完結します。

例えば、選択肢タグで \q[はい,AnswerYes] と書いた場合、以下の関数を作成するだけで対応できます。

AnswerYes {
    "\0\s[0]よかった!\e"
}

OnChoiceSelect内で大量のcase文を書く必要がなくなります。

関数識別子の命名制限

選択肢名(関数識別子)には以下のものを使用できません。

  • 数字またはアンダースコアで始まるもの
  • スペースや以下の特殊文字を含むもの: ! " # $ % & ( ) * + , - / : ; < = > ? @ [ ] \ { | } ~`
  • 予約語と一致するもの

関連項目

  • Tips/直前の会話をもう一度再生する
  • Tips/誕生日を覚える
  • マニュアル/関数/ISFUNC
  • マニュアル/関数/EVAL