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

未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

Unity,ローカルのサーバ,S3の順番で連携する

Unity,ローカルのサーバ,S3の順番でなんとか連携してUnityから直接スクリーンショットをアップロードすることをやりたい.

 

キャプチャするときのコードは以下を参考に作成.

How to save a picture (take screenshot) from a camera in game? - Unity Answers

 

実際にPNG化してサーバに送るコードは下のようになった.

レンダーテクスチャーをPNG化して,そのバイナリをサーバに送る

 

サーバ側のコードは下のようになる.

ローカルサーバからS3へキャプチャされた画像をアップロードする

 

サーバからアップロードされたファイルのURLを返して欲しかったけれども,失敗して大量の画像をアップロードしてしまったので,Unity側でURLを生成している.たぶん,そこのURLからアクセスすれば画像を参照できる.

 

一応,S3のバケットのパーミッションの設定では,Everyoneを有効にしていたのでちょっと危ないと思った.仕方がないのでとりあえず,UploadとDelete以外は無効にしておく.うっかり,Adminに近いユーザのListを切ってしまったので,何も見れなくなってしまったけれども,コンソール上から変更できたので助かった…….

 

次は生成されたURLをJS側に送るコードを書く.JSに送ったURLをTweetボタンの中に埋め込んで,ツイートできるようにする.これができるようになれば,ゲーム中のスクリーンショットをつぶやくだけのプログラムが書けたことになる.(ただし,まだEC2の設定が終わっていないので,それは後日行うことにする……)