Unity快速导入接口文档的方法

  一般后端提供来的接口文档有些是Swagger, 有些低代码的平台会直接提供Postman, 我们要快速导入Unity的话有很多方法, 如果是普通开发环境的话, 直接导出就行:

Unity快速导入接口文档的方法

  可以直接得到C#代码, 不过有一些依赖, 比如 RestSharp, Newtonsoft.Json 之类的, 比如一个这样的接口:

Unity快速导入接口文档的方法

Unity快速导入接口文档的方法

  生成的代码接口主要内容如下 :

  1. 异步接口 

Unity快速导入接口文档的方法

  2. 数据结构

Unity快速导入接口文档的方法

Unity快速导入接口文档的方法

  它这里为了转换安全耍了个小聪明, int类型生成了可空, 估计所有值类型都会是可空的. 并且在函数的输入自动判断了是否可空, 在函数实现的时候也进行了非空判断, 比如上面的type是(*required)标记的, 它的变量输入为 int? 可空的, 而函数实现是下面这样的:

Unity快速导入接口文档的方法

  跟接口需求符合. 没有特别需求的话, 直接就能用了, 只需要添加依赖库到Unity就行了.

  我们现在用的UniRx也是可以跟它联动的, 比如这样:

    public System.IAsyncResult BeginXXX(object obj)
    {
        Debug.LogError("Start");
        return Task.Run(async () =>
        {
            var rateLimit = Task.Delay(System.TimeSpan.FromSeconds(3));
            await rateLimit;           
        });
    }

  把一个 async 过程调用为 IAsyncResult 返回, 就能解决跟 UniRx 的联动了:

Observable.FromAsyncPattern((_, __) => { return BeginXXX(_); }, (_end) => { Debug.LogError("END"); })().Subscribe();

  不过这里试了一下, 貌似没有执行到end回调, 先忽略.

 

  我们这里现在的做法是先把接口导出到Postman里面, 然后再根据Postman来生成代码的, 过程如下:

Unity快速导入接口文档的方法

  转换成比较合适的Format, 然后Import到postman里面去:

Unity快速导入接口文档的方法

  然后通过递归来获取指定结构, 在postman里面的注释中有Swagger的一些信息, 比如枚举之类的:

Unity快速导入接口文档的方法

 

Unity快速导入接口文档的方法

  也能通过判断生成:

Unity快速导入接口文档的方法

  这里直接整合了UniRx, DataTable, LitJson的逻辑.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

上一篇:unity外部摄像头占用问题


下一篇:unity学习笔记(2)-Time类