LoginSignup
6
7

More than 5 years have passed since last update.

【Unity】WebGLからWebページ側の関数を呼び出す

Last updated at Posted at 2015-05-07

概要

Web Player内からWebページのJavaScriptの関数を呼び出す場合、
Application.ExternalCall()関数を使えば簡単に呼び出せますが、Unity5にバージョンアップしてWebGL出力が可能になってから、このあたり未着手だったので、GWの気晴らしにやってみました。

以下はそのサンプルの手順です

Unity側

スクリーンショット 2015-05-07 0.52.47.png

新規プロジェクトで、とりあえず適当にobjectを2つ作って、それぞれに赤色と青色のマテリアルをアタッチします。

更に、以下のスクリプトを上で作ったobjectにアタッチします。

eventFlg


var eve = "eve";

function OnMouseDown(){ 
     Application.ExternalCall(eve);
}

スクリーンショット 2015-05-07 14.31.28.png

変数に"eve"を持たせているので、インスペクターでこの"eve"を"blue"に変更します。
(同じように赤のobjectは"eve"を"red"に)

これで青のobjectがクリックされれば、"blue"という名を持つ関数を呼び出すことになります。

Unityでの作業はここまで。

そのままビルド設定で、「WebGL」に変更してビルドします。

(あ、念のためビルドの前に実行して、objectをクリックしてコンソールでExternalCallが動いているか確認しておいてください)

スクリーンショット 2015-05-07 14.39.29.png

Webサイト側

多少、時間がかかりますが、HTML5で出力されるので、出力された「index.html」を開いて編集します。

色々とごちゃごちゃ記述されてますが、特に気にせずに</body>直前の<script></script>タグ内に以下のコードを追記します。



function red(){
  alert("red");
}

function blue(){
  alert("blue");
}

Unityの方で書いたスクリプトをそれぞれの関数名で呼び出します。

実行・検証

表示されるまで、けっこう時間かかります。

スクリーンショット 2015-05-07 14.57.56.png

青のobjectをクリックすると

スクリーンショット 2015-05-07 14.58.02.png

ブラウザ側でアラートが出るので、ちゃんとWebGLからWebページの関数を呼び出せてます。

Web Playerの時と何も変わらないですね。
次は逆のWebページからUnity(WebGL)の関数の呼び出しをやってみます。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7