embed_var_save
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
embed_var_save [2024/07/12 11:31] – [2.保存した変数をキープしておく] machiaworx | embed_var_save [2024/07/27 04:32] (現在) – machiaworx | ||
---|---|---|---|
行 5: | 行 5: | ||
少なくとも管理者は以下の理由により必要がありました。 | 少なくとも管理者は以下の理由により必要がありました。 | ||
- | * 敵スクリプトを書いてる時に特定タイミングで次に行動を指定したい | + | |
- | * プレイヤーの行動に合わせて敵やボスの行動を変更したい | + | * プレイヤーの行動に合わせて敵やボスの行動を変更したい |
+ | * ツールを作っていて、特定命令を1回実行したらツールの色が変わるようにしたい等 | ||
上記内容について、実装がうまく行ってるのでその内容を記載します。 | 上記内容について、実装がうまく行ってるのでその内容を記載します。 | ||
行 83: | 行 84: | ||
ただこのおかげでMiniScriptがプログラム本体に影響なく処理を行えるシステムになっているということではあります。 | ただこのおかげでMiniScriptがプログラム本体に影響なく処理を行えるシステムになっているということではあります。 | ||
- | これらのグローバル変数は正確な計算はしてませんが、恐らく「次のスクリプト起動タイミング」までは有効かと思います。 | + | これらのグローバル変数について正確なウォッチはしてませんが、恐らく「次のスクリプト起動タイミング」までは有効かと思います。 |
よって、次の実行までに別の場所に保存する必要があります。 | よって、次の実行までに別の場所に保存する必要があります。 | ||
- | ※正確に言うと変数のIndexが作られたら以降のプログラム実行後も恐らくそのままではあるんですが、グローバル変数である関係上いつ更新されるか分からないので早い段階で別の場所に保存しておく必要はあると思います。 | + | ※正確に言うと変数のIndexが作られたら以降のプログラム実行後もそのままではあるんですが、グローバル変数である関係上いつ更新されるか分からないので早い段階で別の場所に保存しておく必要はあると思います。 |
==== 2.保存した変数をキープしておく ==== | ==== 2.保存した変数をキープしておく ==== | ||
行 103: | 行 105: | ||
とは言うものの一度Contextを起動しないとうまく初期化ができないので、ソースコードが空の状態で起動して、上記の処理を行うことになります。 | とは言うものの一度Contextを起動しないとうまく初期化ができないので、ソースコードが空の状態で起動して、上記の処理を行うことになります。 | ||
- | === 3.参照するときは未使用Interpreter上の変数から === | + | ==== 3.未使用Interpreter上から変数を参照する ==== |
これでいつでも変数を参照できるようにはなりましたが、先程の話の通り利用中のInterpreter上だといつ更新されるかわかりません。 | これでいつでも変数を参照できるようにはなりましたが、先程の話の通り利用中のInterpreter上だといつ更新されるかわかりません。 | ||
行 111: | 行 113: | ||
search = savedInterpreter.vm-> | search = savedInterpreter.vm-> | ||
+ | 上記は、変数を作成し、未使用InterpreterクラスからIndexerで変数にアクセスし取得する処理です。\\ | ||
ややこしいですがここまででようやく変数をContext外で保存、ないしはアクセスすることができるようになりました。 | ややこしいですがここまででようやく変数をContext外で保存、ないしはアクセスすることができるようになりました。 | ||
+ | |||
+ | ちなみに、特定のインデクサでアクセスできる事自体は「誰も管理していません」。\\ | ||
+ | すなわち何も登録していない場合、アクセスした時点で内部で例外的なアクセス扱いになります。(つまりエラー)\\ | ||
+ | よって、このインデクサで変数を登録しているよ!という管理が必要になります。 | ||
+ | |||
+ | 自分の実装では、別途変数を設けてこのインデクサにアクセスしていることを変数を見て確認した上でアクセスできるようにしました。 | ||
+ | |||
+ | ==== 最後に ==== | ||
+ | |||
+ | サンプルプロジェクトも用意したほうがいいかなと思い始めてます。説明がややこしいので。 |
embed_var_save.1720751514.txt.gz · 最終更新: 2024/07/12 11:31 by machiaworx