LoginSignup
6

More than 5 years have passed since last update.

WebPlayerでtwitterの投稿ページを開く

Last updated at Posted at 2013-01-28

twitterの投稿ページを投稿する文字指定して開く

というのを試して盛大にハマッたのでメモ。
結論としては、OpenURL関数使うのが一番いい。

  • jsとcsのURIエンコーディング問題
  • OpenURL関数とExternalEval関数
  • WebPlayerのデモ

jsとcsのURIエンコーディング問題

コードのファイルの文字コードに気をつけなければならない。
jsではUTF-8LEBOM
csではUTF-16LEBOM
でないと、WWW.EscapeURL("日本語文字列")でエンコードしても、期待した表示が出来なかった。
jsは勝手に色々と良い感じにしてくれるっぽい感じ。
C#とJS混在してもいいって人はtweetするコードだけJSで書いちゃえば良いと思う。
 
 

OpenURL関数とExternalEval関数を比較

まず前提として、
OpenURL()は引数に指定したURLをpcならデフォルトブラウザで、スマフォならアプリを選択して開く関数。
ExternalEval()は、WebPlayerで再生中のページで引数で指定したJavaScript関数を呼び出す関数。そのためWebPlayerでしか使えない。
 
 

OpenURL()を使用した場合

これは、どのPlatformでも使える汎用的なものだが、WebPlayerでゲームが起動しているページからURLをロードしてしまうので、またゲームのページに戻るとUnityPlayerのロード画面からになってしまう。

OpenURL()を使用した場合
Application.OpenURL("http://twitter.com/intent/tweet?text="
 + WWW.EscapeURL(text));

 
 

ExternalEval()でwindow.location.hrefを実行

この場合は、OpenURLと同じく、WebPlayerのページからURLに飛んでしまう。
あと、何故かdropBoxにupして試してみると、日本語表示がおかしくなる。
[デモ]((http://dl.dropbox.com/u/26238578/tweetTestGUI/tweetTestGUI.html)見ればそれが分かる

ExternalEval()でwindow.location.hrefを実行
Application.ExternalEval("window.location.href 
 = 'http://twitter.com/intent/tweet?text=" + text + "'");

 
 

ExternalEval()でwindow.openを実行

これをwindowサイズ指定で実行すると、ブラウザのポップアップブロックが作動して、手動でそれを許可しなければならない。
これは、例えばゲームをプレイしてる人がスコア情報などをtweetするのを妨害している様な物なので、つらい。
あと、何故かdropBoxにupして試してみると、日本語表示がおかしくなる。

ExternalEval()でwindow.openを実行
Application.ExternalEval("window.open('http://twitter.com/intent/tweet?text
 = " + text + "','','width=500,height=400');");

 
 

WebPlayerのデモ

一応、英語と日本語で、上記の3種類の方法を試すデモ作ってみた。
何故かJSのメソッド実行してる方法は、日本語表示が全滅している、くそが。

デモ

 


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