WebPlayerとサイトの連携

JavaScript 第6版
「Unity内で綺麗な数式が表示できないなら、Unity外で表示すればいいじゃない!」
と思いつき、調べてみたら方法はあった。
ただ、Javascriptなんて(避けては通れないとはいえ)ほとんど使ったことないよ!*1



プロダクティブ・プログラマプロダクティブ・プログラマ / june29
 方法としては簡単で、
(1)UnityのスクリプトApplication.ExternalCall("hoge", str);を加える
 "hoge"は呼び出したいJavascript側の関数名。strは引数。今の場合は文字列(Latexの数式)。


(2)UnityプロジェクトをWebPlayerでビルド。


(3)html側に<div id="view"></div>を記述。


(4)Javascript側にfunction hoge(arg)を実装する。
 関数hogeがUnityによって呼び出される。argは引数。渡されたstrの文字列(Latexの数式)が入る。


(5)hoge内に下のコードを書き込む。
var node = document.getElementById("view");
node.innerHTML = "\\("+arg+"\\)";
MathJax.Hub.Typeset();
最後のMathJax.Hub.Typeset();がないと、数式がちゃんと表示されない。


(6)html内に<embed>タグでUnityを設置。


(7)実行。数式が表示される。


(8)幸せ。



Pololu Jrk 21v3 USB Motor Controller with FeedbackPololu Jrk 21v3 USB Motor Controller with Feedback / Osamu Iwasaki
テストで作ってみたのがこれ↓
maker
ボタンを押して数式がもう一つ表示されれば関数呼び出し成功。





参考にしたサイト
WEBページとUnity Web Playerの連携をJavascriptで行う | メモ帳代わりのブログ
読み込んだテキストをHTMLページ内に表示する - HTMLページとの連携 - Ajax入門
Ajax初心者入門講座: Step1・ソースコードを書く
Ajax - jQuery 日本語リファレンス
Unity - マニュアル: Unity Web Player とブラウザーの通信
HTML5の基本的な書き方をまとめてみました | webデザイン | web is a creation
JavaScript入門 - 基本構文の解説とクラス/関数リファレンス
JavaScriptの記述方法 - JavaScript入門
外部ファイルにスクリプトを記述 - JavaScriptの記述方法 - JavaScript入門
Getting Started — MathJax 2.5 documentation
LaTeXコマンドシート一覧
Ajax でページの一部だけを部分的にリロードして軽量化したいのだが IE は未対応 | ウェブル
Ajaxで特定部分を書き換える - JavaScriptist
Javascript Mathjax - Stack Overflow
html - load Mathjax after loading javascript - Stack Overflow

*1:使うことがないから、未だにAjaxとかjQueryとかよくわかってない。