OpenAPIをUnityで使う
code:sh
java -jar openapi-generator-cli.jar generate \
-i OpanAPI.yaml \
-g csharp-netcore --library httpclient \
-c config.json \
-o dist
Unity向け出力について
デフォルトだと通信にRestSharpを使用しているらしく、Unityでは使えない
System.Net.Httpが提供するHttpClientを利用するバージョンが用意された。
この機能は、Stableである5.4.1には搭載されていないので、最新版の6.0.0を利用する必要がある
6.0.0の一番古い提供が2021/10/25版なので6.0.0なら何でもよい(追加機能のマージは2021/02/25)
config.jsonについて
上記に基づいて、validatable, packageGuidを設定する
ついでに、targetFrameworkをUnityの設定と揃える
外部依存にPollyを要求されてしまうので、supportsRetryをfalseにする code:config.json
{
"validatable": false,
"targetFramework": "netstandard2.0",
"packageGuid": "...",
"supportsRetry": false
}
OpenAPIのコードジェネレータが、大きく次の二つに依存
HttpClient(System.Web)
Newtonsoft.Json
HttpClient
.netのバージョン(API Compatibility Level)を".netstandard 2.0"にしていれば使える
Net4.xの場合、ランタイムにDLLが同梱されないので、コンパイラに指示する必要がある
コンパイラへの指示の出し方(mcs.rsp, csc.rsp)についてはこっち 指定したらプロジェクトファイル(.slnなど)を再生成しよう
ランタイムをMonoにしてると、Androidで動作しないっぽい?(とはいえ性能的にもIL2CPP一択ではある)
Newtonsoft.Json
NuGetにあるやつはAndroidで使えない
UPMから入れただけだと、ソリューションファイルが更新されなくてVSCode側でインテリセンスが効かないので、Preferenesから、プロジェクトファイルを再生成するとよい