Unityと吉里吉里でSLGとかRPGを作るブログ

前回公開した「だ出ゲーム」を構成するスクリプトについて解説します。


■000_CustomLayer(カスタムレイヤ)
■001_ImageLayPlugin(イメージレイヤ)
■002_ImageListLayPlugin(イメージリストレイヤ)
■003_WinButtonLayerPlugin(ウィンドウボタンレイヤ)


この4つのプラグインについては、「じゃんけんゲーム」の物と同一です。
以下の方を参照下さい。
◆じゃんけんゲーム解説◆


■004_AroomPlugin(Aルームプラグイン)

Aルームを構成するプラグインです。
具体的には、ドアボタン(Bルームに行く)鍵穴ボタンの機能を持っています。

まず、鍵穴ボタンですが、こちらは「じゃんけんゲーム」では使用しなかった機能を使っています。
じゃんけんゲームでは、ボタンは全てWinButtonLayerPluginを使用していました。
しかし、鍵穴ボタンは、ImageLayPluginを使用しています。
//===============================================
//鍵ボタンの設定
//===============================================
var button_id = "KEY"; //実行されたファンクションに戻されるID
a_button[0] = new ImageLayPlugin();


ImageLayPluginは画像を表示するレイヤ用のプラグインです。
しかし、以下の部分でボタン化しています。
//レイヤをボタン化
a_button[0].setFunction(void, click_func, onmouse_func, offmouse_func, void, button_id);


この方法を取った一番の理由は、ズバリ必要な画像サイズです。
WinButtonLayerPluginの場合、以下の様な4つの画像が連なった物を必要とします。
button_gu_image.png

しかし、画像をそのままボタン化するのであれば、以下の様な画像だけでOKです。
Key_ana.png

サイズが小さくて済みますね。

つづいて、Aルームの肝である、鍵穴ボタンをクリックした時の処理です。
以下の部分は、アイテムウィンドウでを選択されているか判定しています。
が選択されていれば脱出。して
いないなら「鍵がかかっている旨のメッセージ」を表示します。
//アイテムウィンドウで鍵を選択
if(global.item_win.getSelectItem() == "KEY")


Aルームを表示する機能は以下のファンクションになります。
Aルームには条件によって表示非表示があるアイテムはありませんので、オープンされたら全てのアイテムを表示します。
//------------------------------------
// メ
イン画面の表示
//------------------------------------
function openWin(i_page)
{
  //オブジェクトを全て表示
  setVisible(i_page, true);
}



■005_BroomPlugin(Bルームプラグイン)

続いて、Bルームについて解説します。
Bルームには、ボールドアボタンがあります。
ボールは、クリックする事で、アイテムウィンドウに格納されます。
処理的に言うと、クリックされたら画面から消えて、アイテムウィンドウにクリックしたアイテムを表示する訳です。

Bルームのボールも、Aルームの鍵穴と同じ様にImageLayPluginを用いてボタン化しています。

Aルームを表示する機能は以下のファンクションになります。
key_flgmaru_flgがそれぞれのアイテムを拾ったかを判断するフラグとなっており、それが立ってる場合は、アイテムを非表示にしています。
//------------------------------------
// メイン画面の表示
//------------------------------------
function openWin(i_page)
{
  //全てのボタンを表示
  setVisible(i_page, true);

  //キーを既に拾っている
  if(key_flg == 1)
  {
    //キーボタンを非表示
    b_button[0].setVisible("all", false);
  }

  //●を既に拾っている
  if(maru_flg == 1)
  {
    //●ボタンを非表示
    b_button[1].setVisible("all", false);
  }
}


■006_ItemWinPlugin(アイテムウィンドウプラグイン)

アイテムウィンドウは、ボールのボタンを作成しておき、を拾ったらを、ボールを拾ったらボールを表示する機能を有したプラグインです。
もう1つの機能としては、ボールのボタンを押すと、それらを選択する事が出来ます。
選択したアイテムをその他のプラグインから確認出来る様にもなっています。

ボタンはいつもの様に作成します。

アイテムウィンドウの表示機能は以下の様になっています。
//------------------------------------
// メイン画面の表示
//------------------------------------
function openWin(i_page)
{
  //ウィンドウの表示
  win_lay.setVisible(i_page, true);

  //キーフラグがON
  if(key_flg == 1)
  {
    //鍵ボタンを表示
    item_button[0].setVisible(i_page, true);
  }

  //●がON
  if(maru_flg == 1)
  {
    //●ボタンを表示
    item_button[1].setVisible(i_page, true);
  }
}


ボールのフラグを持っていて、それが立ったらアイテムボタンを表示するのです。

続いて、肝であるアイテムボタンがクリックされた時の処理を見てみましょう。
まず、以下の様に1度全てのボタンを使用可能にします。
//ボタンを全て使用可能に設定
for(i=0; i < item_button.count; i++)
{
  item_button[i].setEnabled(true);
}
更にクリックされたアイテムボタンを使用不能にします。
//鍵ボタンを使用不能に設定
item_button[0].setEnabled(false);

何故使用不能にするかを説明する前にWinButtonLayerPluginについておさらいして置きます。
WinButtonLayerPluginは、簡単に言えば、以下の画像を読み込んでマウスの状況に応じて画像を切り替えるボタンを作成する機能です。
button_gu_image.png
右から、平常時クリックした時マウスが乗った時使用不能な場合です。
使用不能とはどういう状況かと言うと、機能的には2種類の意味があります。
1つは、マウスのアクションで画像が変わらない。常に4つ目が表示されます。
次にマウスのクリックに対してイベントが発生しない。クリックしても何も起こらないと言う事です。

なので、以下の様な画像をロードして作ってやれば、クリックした時に使用不能にするだけで、選択した様な効果を出せます。
button_key_image.png

最初に全てのボタンを使用可能にしたのは、常にクリックされたアイテムだけが使用不能にする為です。
これによって、前に選択されていた(使用不能になっていた)ボタンが解除され、今回クリックしたボタンが選択(使用不能)になります。

続いて、選択したアイテム情報の保持と取得です。
//選択アイテムの設定
setSelectItem(i_id);
ファンクションにはなっていますが、select_itemと言う変数にボタンに渡した識別用のIDを渡しているだけです。
後は、getSelectItem()でこの変数を返せば、他のファンクションから今選択されているアイテムを知る事が出来ます。

■総括

どうでしょうか、ちょっと速足ですかね。ソースがあるので眺めて頂ければ割と簡単かと思うのですが如何ですか?
次回はもう少し、脱出ゲームに役立つ機能を紹介します。
1つは、後ろの絵に合わせた四角い形以外のボタンの作り方。もう1つは画像を使わないボタンの作り方です。

そして、勿体ぶっている例のエラーについても、原因と対策を紹介します。




◆つぶつぶ主人公HP◆
スポンサーサイト
2012.05.08 / Top↑
Secret

TrackBackURL
→http://nekodamasi.blog79.fc2.com/tb.php/63-8c79442c