[gRPC] UnityとgolangでgRPCを使ってみる(androidまで)

お世話になっております。
しゃまとんです。

前の記事でまずはgolangでgRPCを使って動作させてみました。

[gRPC] golangでgRPCを使ってみる
お世話になっております。 しゃまとんです。 gRPC触ってみたいぞ!ってことで、Unity x golang x gRPC を試してみまし...

今回はclient側にUnityを使ってみたいと思います。
実行環境はこんな感じでした。

Unity2018.1.1f1(OSはMacです)
Go 1.10.3

まずUnityでgRPCを使うには.NETのバージョンを上げておく必要があります。
Menu:Edit -> Project Settings -> Player -> Configuration として図のように設定しておきます。

次にgRPC関連の必要なパッケージを用意しましょう。
本当に最近(2018/08時点)ですが、公式でビルド済みのライブラリを用意してくれるようなりました!

まだexprimentalなので、ご注意くださいね
Github issue – Unity3D package #15013

ということでこちら(https://packages.grpc.io/)にアクセスし、Daily Builds of master Branchの項目の最新のBuild IDのリンクをクリックします。

するとパッケージのリストがあるので、Grpc.Toolsとgrpc_unity_packageをダウンロードしましょう。

ダウンロードしたら、Unityで新規プロジェクトを作成し、とりあえず移動させておきます。

Grpc.Toolsはnupkgになっていますが、拡張子をzipに変更することで簡単に解凍することができます。ただGUI上で解凍すると、フォルダ構成がうまく復元できないことがあったので、コマンドで実行するほうがよいかもしれません。

grpc_unity_packageはUnityで必要になるので、Assets配下にフォルダを作成して解凍します。こちらはPluginsにすべて含まれた状態になるので、Assetsを対象にして解凍します。

これでgolangと同じ準備ができた(はず)ので、protoファイルを作成して実装を進めていきます。基本的に前回のものと一緒ですが、namespaceだけ分けておくため、追記して何処かに配置しておきましょう。(本当は共通のものを参照しているとよい)

今回はGrpcSample(プロジェクト名)/protosに配置しました。

protoをC#に変換します。出力時に指定のフォルダがないとエラーになってしまうので、事前に作成しておく必要があります。そして生成コマンドがgolangより長い。

それでは生成したコードを利用して、クライアントを書きます。適当なシーンを作成しUI.Textを参照させておいてください。

それではserver.goを実行した状態で、Unityの再生を開始すると…
replyがきます!

一応サーバーはこうなります。

最後に端末で動作確認してみたいと思います。Project SettingsのIdentificationを初期値から適当に使わなさそうな名前に変更しておきましょう。

あとはSwitch PlatformしてAndroid / iOSビルドするだけ!と思っていたのですが、iOSではビルドエラーになってしまうようでした。。。Androidでの実行結果だけ残しておきます。

文字が小さくてすいません。。
以上です。

追記:iOSもできました!

[gRPC] UnityとgolangでgRPCを使ってみる(iOSも)
お世話になっております。 しゃまとんです。 前回の記事でiOSで実行できなかったので、追加記事を作成しました。 こちらで一応iOSで...

■ 参考
UnityでNuGetパッケージを使う方法