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

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

WebPlayerでGetMethodのパラメータを取得する

Unity WebPlayer スクリプト メッセージング

こんな感じのゲームを作りたくなった。

  • 選択肢をミスると即死する即死系RPG
  • 死んだ際、死んだ理由(やってはいけない事リスト)がメモに書かれる。
  • 1日に3回までプレイ出来る。3回死んだ後Twitter向けにURLが発行される。
  • URLからプレイすると、死んだ理由・死んだ回数が引き継がれている。
元ネタは木質さんのSS「夢の夢の夢の・・・」シリーズ。
夢の夢の夢の・・・ 1 八雲紫編
夢の夢の夢の・・・ 2 レミリア編
夢の夢の夢の・・・ 3 八坂神奈子編
夢の夢の夢の・・・ 4 蓬莱山輝夜編
夢の夢の夢の・・・ 5 古明地さとり編
夢の夢の夢の・・・ 6 聖白蓮編
夢の夢の夢の・・・ 7 西行寺幽々子編

理不尽な死にゲーの世界に放り込まれた八雲紫レミリア・スカーレット古明地さとり聖白蓮等の各勢力のトップが、ルールに従ってゴールを目指すというもの。

例えば八雲紫の場合はこんな感じ。

『 チョウショク ヲ タベテ コノ イエ カラ デラレレバ アナタ ノ カチ 』

  【やってはいけないリスト】

二度寝はするな
・布団は押入れに片付けるな
・スキマを使うな
・藍の出すお茶は飲むな
幽々子に醤油を渡すな

で、死にゲー云々は兎も角、Twitter向けに発行したURLでデータを共有する方法を考えてみた。



まずWebPlayer実行時にGet methodを取得する方法だが、Unity本体にはそんな機能はないのでJS側に取っ手貰うことにした。

流れとしては

  1. UnityからJSを呼び出す
  2. JSがパラメータを取得する
  3. Unityへパラメータを返す
  4. パラメータをバラしてget methodを取得する
と言った感じ。

まずUnityからjsを呼び出すには、Application.ExternalCallを使う。
Application.ExternalCallはJSに定義されているメソッドを呼び出す機能。

このApplication.ExternalCallで呼び出すメソッドはまだ無いので、自分で定義する。ただし、単純に出力した物に書くと毎回出力する度に上書きされてしまうので、webplayerのテンプレートみたいな物を用意してやるのがベストな感。

スクリーンショット 2013-09-16 15.03.56  スクリーンショット 2013-09-16 15.04.04

今回はlocation.search.substring(1)を(sendMessageで)返すgetRequestメソッドを用意した。webplayer側のsendMessageもネイティブプラグインと同様のフォーマットで、GameObject名,メソッド名,引数の順番。

スクリーンショット 2013-09-16 15.07.23

最後に、location.search.substring(1)で取得したパラメータは&以降の部分なので、中身を分解してやる必要がある。その辺りはparam.Splitを使えば簡単に出来る。



実際のデモ

別ウィンドウ版はこちら


何かの参考になるかもしれないので、ソースコードも置いておく。
デモのパッケージはこちら

使い方は簡単で、web templateをgetMethodTemplateにした後、スクリプト側で「WPGetRecieve.GetRequest」を呼べばgetパラメータを取得できる。