上級編 その2



ユーザースクリプト(β版)
本アセットのシーンファイルとともにぽつんと存在するC#ファイル、ユーザースクリプト(UserScript)について説明します。

この中には幾つかのメソッドが存在し、ゲーム中に特定の動作をすると、その中のメソッドが呼び出されます。(セルをオープンした時やゲームオーバー時など)
実は今までもゲームを実行中、この中のメソッドが呼び出されていたのですが、何も命令が入っていないため無反応だったというわけです。

ユーザースクリプトの中にあるメソッドにプロブラムを書き加えることにより、より変化に飛んだマインスイーパを作ることができます。例えば、セルを開けていくごとに表情を変えていったり、特定の時間になると何かを喋ったり、クリア時のソナーの数でステージを分岐させたり etc...

なお、ここからは当然の話 C#スクリプトが扱えることが前提となります。C#についての説明はしませんので、ご了承をば。

また、β版ですので 不具合が出る可能性があります。これは必ずしも触らなければならないと言うものではなく、入れられるから入れたというものですので、こんなものがあるんだな程度に抑えておいてください。


あと、作例はここでは記しません。別の所でサンプルを交えて公開する予定ですので気長にお待ち下さい。


UserScriptを開くと、エディタが開きます。

基本的には、[ //以下ユーザー設定用メソッド ]以下にあるメソッドの中にスクリプトを書き込んでいきますが、必要であればpublicを使い外部項目にアクセスすることができます。



まずは、ユーザースクリプトに予め用意されている変数について説明します。おそらく使うであろうと思う変数をピックアップしています。


変数

UserConfig (ConfigDirector型)

ステージのコンフィグ設定(ConfigDirectorコンポーネント)を収録しています。コンフィグ設定を読み込んだり書き込んだりする場合にご利用ください。

(例)
現ステージを読み込み:
stirng st = Userconfig.cStageStr;


次のステージの変更(ステージ分岐):
UserConfig.nextStageStr = "Stage2-B";


FrontImageSR
BackImageSR

(SpriteRenderer型)

”FrontImageSR”に前面画像[--FrontImg--]、”BackImageSR”に後面画像[--BackImg--]のSpriteRendererコンポーネントを収録しています。ここは主に画像を入れ替えたいときに利用します。


(例)
前面画像を入れ替えたい

public Sprite Img; //(画像を外部登録)
FrontImageSR.sprite = Img;


PlayingStageName (String型)

コンフィグ設定の[現ステージファイル名](cStageStr)をString型で収録しています。後ほど説明しますが、複数ステージを作る場合にこの文字変数が必要になってきます。


(例)
ステージ1のみに処理させたい。

if (PlayingStageName == "Stage1") {
  //処理スクリプト
}



次にメソッドについて説明します。
試しに、メソッドの中に Debug.Log(" "); を入れConsoleに何かを表示させるなりして、各メソッドが実際どのタイミングで呼び出されるかを調べてみてください。


メソッド

MethodGameStartA( )
ゲームスタート([Stage◯]が表示される前)に呼び出し

MethodGameStartB( )
ゲームスタート([Stage◯]が消えた直後)に呼び出し

MethodCellOpen( )
セルをオープンしたときに呼び出し
※一度に複数セルを開いた時も一度だけ呼び出されます。

MethodCellLock( )
セルをロックした時に呼び出し

MethodSonarOK( )
ソナーを使用して、そのセルに何もなかった時に呼び出し

MethodSonarNG( )
ソナーを使用して、そのセルが地雷だった時に呼び出し

MethodGameOver( )
ゲームオーバー(地雷を引いてしまった直後)に呼び出し

MethodGameClear( )
ゲームクリア(最後の安全セルを開いた直後)に呼び出し



また、各メソッドに1〜3つ引数があります。if文で分岐させる場合とかに調べてください。

引数

TimeCount (Int型)

メソッドが呼び出された時のゲーム経過時間・タイマー数(秒)
※小数点以下は切り捨て

CellOpenPercent (Int型)
メソッドが呼び出された時の安全セルの残りの割合(%)

全く開いていないときは100 (%)、開いていく度に数が減っていき、0 (%)でクリアとなる。

SonarCount (Int型)

メソッドが呼び出された時のソナーの数


 
※複数ステージを作る場合の注意点
単ステージだとそのまま使用して構いませんが、複数ステージを作る場合は注意が必要です。
このユーザースクリプトは、全ステージ同じものを使いまわししています。
ステージ1もステージ2もそれ以降も、同じユーザースクリプトしか編集することはできません。

では、どうすれば各ステージ個別に命令することができるかといいますと、上で説明した[PlayingStageName]変数を使用して、if文で分岐させてください。


(例)
public void MethodGameStartB (int SonarCount) {
   if (PlayingStageName == "Stage1") {
   //ステージ1の処理
   } else if(PlayingStageName == "Stage2"){
   //ステージ2の処理
   }
}





◆目次へ戻る◆




その他 へ→





presented by