string 読み込み変数 = "デフォ"; // この変数に、外部データから値を読み込む // 自分で定義した関数 void Myパラメータインポート() { // フィアルの読み取り&実行にかかる。必ず try ... catch try { MRUBY::Do_ファイル("ScenarioMod.rb"); // ScenarioMod.rb というファイルを「mruby言語解釈」して実行する。 // 何か例外エラーが発生した } catch (MRUBY::例外型 e) { デバッグ出力 << "ScenarioMod.rbで何かエラー:" << e << endl; return; // このレベルでエラーしてるのはまずい。パラメタ読み取り即終了。 } // ここまできたら、ファイルが読み込め、mrubyとしても最低限実行できたようだ。 // 変数の読み取りにかかる。必ず try ... catch try { 読み込み変数 = MRUBY::Get_グローバル文字列("$test_var"); } catch(...) { } デバッグ出力 << "変数:" << 読み込み変数 << endl; } void カスタム::On_起動時() { Myパラメータインポート(); }
そして、以下のように対象となるmrubyファイルを「天翔記フォルダ」に用意する。(文字コードはcp932 ≒ shiftjisにて保存のこと)
(ScenarioMod.rb)側$test_var = "ズキュキュン太"
グローバル変数の読み込みは、「実数」と「文字列」の2つに対応している。
繰り返しとなるが、必ず「try...catch...」するのが必須である。
それを踏まえて、3種類の変数を読み込んでみよう。
int 読み込み変数1 = 0; double 読み込み変数2 = 1.5; string 読み込み変数3 = "デフォ"; void インポート関数() { try { MRUBY::Do_ファイル("MySetting.txt"); } catch (MRUBY::例外型 e) { デバッグ出力 << "MySetting.txtで何かエラー:" << e << endl; return; // このレベルでエラーしてるのはまずい。パラメタ読み取り即終了。 } try { 読み込み変数1 = (int)MRUBY::Get_グローバル数値("$test_variable"); // 返り値は小数形式の型なので、intにする } catch(...) { } try { 読み込み変数2 = MRUBY::Get_グローバル数値("$test_double"); } catch(...) { } try { 読み込み変数3 = MRUBY::Get_グローバル文字列("$test_string"); } catch(...) { } デバッグ出力 << "変数1:" << 読み込み変数1 << endl; デバッグ出力 << "変数2:" << 読み込み変数2 << endl; デバッグ出力 << "変数3:" << 読み込み変数3 << endl; } void カスタム::On_起動時() { インポート関数(); }
そして、以下のように対象となるtxtファイルを「天翔記フォルダ」に用意する。
(MySetting.txt)側$test_variable = "5.7" # Luaとは異なり、mrubyでは、暗黙の「数文字」→「数値」への変換は行われない。「例外」が発生し、この値は読み込まれない。 $test_double = "ジバニャン" # "ジバニャン"を「実数」として解釈することは不可能である。「例外」が発生し、読み込み代入は行われないであろう。 $test_string = 13.55 # Luaとは異なり、mrubyでは、暗黙の「数値」→「数文字」への変換は行われない。 「例外」が発生し、この値は読み込まれない。