ゴール:Unity(iOS/Android)でgRPCを動かす
- [UnityでgRPCを動かす #1 コンソールアプリ]
(https://qiita.com/nakaken0629/items/faf355db576542c2712c) - UnityでgRPCを動かす #2 Unity
- UnityでgRPCを動かす #3 iOS
- UnityでgRPCを動かす #4 Android
開発環境:macOS Mojave + Unity 2019.1.5f1
今回はその4です。
AndroidでgRPCのサンプルを動かす
UnityでgRPCを動かす #2 Unityで別プロセスのサーバーを呼び出すよう修正したプロジェクトからスタートします。Build SettingsでPlatformを"Android"にしてください。
ソースコードの修正
この作業は、エミュレーター+ローカルサーバーという環境でのみ必要な作業です。
Androidエミュレーターから見ると、ローカルマシンのアドレスはlocalhost(127.0.0.1)ではなく10.0.2.2という特別なIPアドレスになっています。なので、接続先のサーバーのアドレスを修正します。
HelloWorldTest.cs
public static HelloReply Greet(string greeting)
{
// 127.0.0.1から10.0.2.2に接続先のアドレスを修正する。
// Channel channel = new Channel("127.0.0.1:50051", ChannelCredentials.Insecure);
Channel channel = new Channel("10.0.2.2:50051", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel);
var reply = client.SayHello(new HelloRequest { Name = greeting });
channel.ShutdownAsync().Wait();
return reply;
}
実行
ソースの修正を終えたら、ビルド&実行をすることで、エミュレーター上でクライアントが動作します。
おしまい
以上、ゴールである「Unity(iOS/Android)でgRPCを動かす」が実現できました。
記事を書き始めた時は、gRPCでUnity対応が進んでいませんでしたが、1年弱経ったところでは専用のサンプルが用意されるくらいには、対応が進んでいました。この後も引き続き対応が進み、正式対応になってくると思います。