是否可以在Unity中构建RESTful服务器?

时间:2017-11-15 20:17:37

标签: rest unity3d

我正致力于研究和构建示例游戏。我希望客户端将REST API调用到Unity REST服务器。然后,服务器将根据REST API运行某些功能。例如,当客户想要在游戏中移动某个对象时,客户端可以简单地将REST API调用到统一服务器,然后服务器将运行函数以移动该对象。

根据我的理解,Unity可以是一个REST客户端,我们可以通过在Unity.Network中使用UnityWebRequest将GET和POST发送到现有的REST服务器。但是,我想知道是否可以在Unity中构建REST服务器?或者是否有任何第三方软件包支持这个?

如果可能的话,请给我一些建议。

2 个答案:

答案 0 :(得分:2)

因此,根据我的理解,您希望在统一内部构建REST服务器。

OWIN / Katana项目在从互联网上搜索后只支持.net 4.0,但团结现在只支持.net 3.5,但当然有统一的实验功能允许我们使用net 4.6(这仍是实验性特征)

除了OWIN之外,还有针对Net 2.0的SignalIR客户端 我在这里找到https://github.com/NVentimiglia/SignalR-Unity3d

因此,您可以在Unity中创建REST API服务器。 但是你为什么要团结一致呢?

如果你想从统一调用REST API,那么你已经具备了使用WWW类的能力,即使用get或者post方法从统一发出web请求。 这允许您从该请求接收文本,图像,甚至字节数据。

例如 如果你在一些自我托管的owin中用OWIN编写你的REST。 并且您希望根据服务器的需要移动播放器。

你可以调用api,然后接收存储为JSON对象的三个浮点的一些信息,然后你可以读取或转换为vector3。

也许你想要统一构建REST的原因是你需要使用UnityEngine功能来做某事。

所以,通过使用WWW或UnityWebRequest,yes unity可以是REST客户端。 但是服务器的统一性对我来说仍然是个问题。

这是从统一调用我的api的一些例子

using System;
using System.Linq.Expressions;
using System.Collections.Generic;
using System.Reflection;

public class ThisCss
{
    public int useThis(int num)
    {
        return 0;
    }
}


public class Program
{
    public static Type ExtractClassType(Expression<Func<int>> methodCall)
    {
        if (methodCall.Body.NodeType == ExpressionType.Call)
        {
            MethodCallExpression memberExpression = (System.Linq.Expressions.MethodCallExpression)methodCall.Body;
            MethodInfo memberInfo = memberExpression.Method;
            return memberInfo.DeclaringType;
        }
        else
        {
            throw new InvalidOperationException("Unable to extract a method call from this expression");
        }
    }



    public static void Main()
    {
        var methods = new List<Expression<Func<int>>>();
        methods.Add(() => new ThisCss().useThis(0));

        var type = ExtractClassType(methods[0]);

        Console.WriteLine("{0}", type);
    }
}

CMIIW

答案 1 :(得分:1)

我认为最好的方法是为此设置后端,websocket更快,因为你与客户端保持连接(这对实时游戏更有用)。但是,如果您想使用HTTP请求,可以使用以下Unity包:https://assetstore.unity.com/packages/tools/network/rest-client-for-unity-102501

您可以使用其他技术(如NodeJS或C#)使用Web API等最新功能

祝你好运