読者です 読者をやめる 読者になる 読者になる

Ging Ring Activity Report

PCゲーマーグループ"Ging Ring"の活動報告、私的メモ、身内(+α)向けまとめ、日記、etc...です。ここ書かれている情報の正確性は保証しません。

質問受付中!

 ブログ内コメント、又はTwitter経由で質問を受付中です。
 記事に対するものでも、単に聞いてみたいことでも構いません。

 ※質問内容をテーマにブログ記事を作成することがあります。予めご了承下さい。

RPGツクールVX Ace - RGSS3メモ1

 間を置くたびに忘れるのでメモ。とりあえずシーンを呼び、その中でウィンドウを使用してアレコレできる状態を目指す。

ゲーム内コマンド「スクリプト」から子のシーンを呼ぶ

SceneManager.call(Scene_xxx);

 ※newを付ける必要はない。クラスを渡すと内部でnewされる。

子のシーンから親のシーンに戻る

 子のシーン内で、

SceneManager.return

 を呼ぶ。

シーンを作る

 タイトル、メニュー、マップ、戦闘、ゲーム内で使用されるあらゆるシーンScene_Baseを継承したクラスで作られてる。Scene_Baseを継承したクラスを、SceneManagerから呼ぶとそのシーンを呼ぶことができる。

Scene_Baseの構成

 SceneManager.callすると以下の順で呼ばれる。何の為にpost_startpre_terminateがあるのかはいまんところよーわからん。

start

 開始メソッド

post_start

 開始後(post)メソッド

update

 更新メソッド。シーンが有効な間、このメソッドが呼ばれ続ける。シーン内でSceneManager.returnが呼ばれるとpre_terminateterminateが呼ばれ、親のシーンに復帰する。

pre_terminate

 終了前(pre)メソッド

terminate

 終了メソッド

ウィンドウの更新

 ウィンドウがどのように更新されているか。

  1. Scene_Baseで毎フレーム呼ばれるupdateupdate_basicを呼んでいる。
  2. update_basic内では表示の更新、入力の更新、ウィンドウの更新が行われている。
  3. まずそのインスタンス内に存在するインスタンスを全て呼び、それがWindowクラスを継承したクラスのインスタンスならupdateを呼ぶ。

 なのでWindowクラスを継承したクラスのインスタンスをそのシーン内で生成すると、それだけでそのインスタンスupdateが呼ばれるみたい。

  • instance_variables → そのインスタンスが所有しているインスタンスの名前を全て返す。
  • instance_variables.each → instance_variablesの戻り値をループで処理する。
  • instance_variable_get → 指定した名前のインスタンスを返す。
  • is_a?(***) → 指定されたクラス、またはそのサブクラスか否かを判定する。

 インスタンスを代入する変数はメンバ変数(@)でないと駄目。ローカル変数だと更新処理の対象にならない。