外部のサーバーからテクスチャをダウンロードする

はいどーもこんにちは、サーバーサイドの技術にも興味があるニートです。
本日はメモがてら外部のサーバーからテクスチャをダウンロードする方法を書いてみようと思います。

どんなのときに使うのか?

ゲームを公開したとして、小さいアップデート(例えば敵キャラのパラメーターの微調整)のたびにユーザーにゲーム全体を再度DLしてもらうのは手間だし時間がかかりますよね。
その面倒を避けるために「パッチ」という感じでアップデートファイルを公開している方もいるかなと思います。
これをもう少し進めて、小さな更新ならゲーム内で自動でアップデートするようにできれば非常にユーザーに優しいです(最近のスマホゲーでよく見かける)。
しかし自動アップデート機能を作る前に、僕としてはもう少しHTTP通信等に慣れておきたいと思いました。
ちゅーわけで今回は外部のサーバーからテクスチャをダウンロードしてみようと思いますよ。

やり方は超簡単

Unityの公式サイトにズバリやり方が書かれています。
https://docs.unity3d.com/ja/current/Manual/UnityWebRequest-RetrievingTexture.html
これをほぼ丸パクリ+UniRxで書き直したものも追加したのが以下のコードとなります。

readonlyになっているフィールドは、僕のTwitterアカウントにあった画像を指定しましたw
で、Startメソッド内でコルーチンを開始させています。
この中身がテクスチャのダウンロード+テクスチャの適用ですね。
UnityWebRequestTexture.GetTextureはテクスチャを取得するのに最適化されているみたいなので、これを使ってます。
あとはリクエストに失敗したらエラーログを表示させて、成功していたら取得したテクスチャからスプライトを作成しているだけです。

UniRxバージョンも見てください。
こちらはとりすーぷさんのスライドをもとに作成しました。
https://www.slideshare.net/torisoup/unity-unirx
Aキーを押したらGETでリクエストを送信して、その結果でスプライトを作成・適用している感じです。
この場合ってエラーの処理どうするんでしょうね?
そのうち調べときたいです。

ゲーム画面としては最初はこんな感じで何も表示されていなくて

画像のDLが終了すると犬の画像が表示されて

Aキーを押すとユニティちゃんの画像が表示されます

終わりに

思ったよりも簡単にできました。
ただ僕はサーバーを持っていないので、実際の運用時はFirebaseだよりになるかなあ……なんて思っています。
色々試してみたいと思いますよ。

ほなそんな感じでまた。

フォローする