C# 在Android上运行Unity中的Python程序

C# 在Android上运行Unity中的Python程序,c#,python,android,unity3d,amazon-dynamodb,C#,Python,Android,Unity3d,Amazon Dynamodb,TLDR:我可以用多少种不同的方式在Android设备上运行Unity中的Python程序 这适用于存储地理位置的Android应用程序,稍后将在其他设备上查询地理位置 我知道IronPython,但它没有针对Python3+进行更新,这是我用来编写需要运行的Python程序的 更多背景故事: 我正在尝试使用AWS dynamoDB,它有一个用于Unity的SDK,因为它构建在.net上。但是,特别是对于查询搜索,它们没有实现或复合搜索,而该实现在Python中可用 下面的Python脚本可以工

TLDR:我可以用多少种不同的方式在Android设备上运行Unity中的Python程序

这适用于存储地理位置的Android应用程序,稍后将在其他设备上查询地理位置

我知道IronPython,但它没有针对Python3+进行更新,这是我用来编写需要运行的Python程序的

更多背景故事: 我正在尝试使用AWS dynamoDB,它有一个用于Unity的SDK,因为它构建在.net上。但是,特别是对于查询搜索,它们没有实现<或>或复合搜索,而该实现在Python中可用

下面的Python脚本可以工作

import boto3
import json
import decimal
from boto3.dynamodb.conditions import Key, Attr
import sys

lat = sys.argv[1]
lon = sys.argv[2]
r = sys.argv[3]


# Helper class to convert a DynamoDB item to JSON.
class DecimalEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            if o % 1 > 0:
                return float(o)
            else:
                return int(o)
        return super(DecimalEncoder, self).default(o)

dynamodb = boto3.resource('dynamodb')

table = dynamodb.Table('tree')

fe = Key('lon').between((decimal.Decimal(lat) - decimal.Decimal(r)), (decimal.Decimal(lat) + decimal.Decimal(r)))
 #THIS IS THE BETWEEN SEARCH THAT IS NOT AVAILABLE IN UNITY
fe1 = Key('lat').between((decimal.Decimal(lon) - decimal.Decimal(r)), (decimal.Decimal(lon) + decimal.Decimal(r)))
pe = "#l, lon, treeStage"
# Expression Attribute Names for Projection Expression only.
ean = { "#l": "lat", }
esk = None


response = table.scan(
    FilterExpression=fe,
    ProjectionExpression=pe,
    ExpressionAttributeNames=ean
    )

for i in response['Items']:
    print(json.dumps(i, cls=DecimalEncoder))

while 'LastEvaluatedKey' in response:
    response = table.scan(
        ProjectionExpression=pe,
        FilterExpression=fe and fe1, #THIS IS THE COMPOUND SEARCH THAT DOESNT WORK IN UNITY
        ExpressionAttributeNames= ean,
        ExclusiveStartKey=response['LastEvaluatedKey']
        
        )

    for i in response['Items']:
        print(json.dumps(i, cls=DecimalEncoder))
我的问题是:要将这个Python程序构建成可以通过Unity的C#在Android设备上运行的文件类型,我必须有哪些可用选项


目前我正在打印从dynamoDB收到的信息,但如果需要,我愿意直接读取或写入文件以在Unity中读取。

是的,您可以使用python语言在Unity中编程。

看看这个→ ...

或者,您可以使用这个Python解释器,但是它的评论不是很好

此外,您还可以使用IronPython从C#调用Python→ 从C#4.0程序运行IronPython脚本

但我不建议使用Python

Unity的主要开发语言是C#。我建议你学C。在这里阅读更多→ 如果我想在Unity中发展,我应该学习C#的基础知识还是立即开始发展


或者如果您熟悉并擅长OpenGL和OpenCV→ 请参考这个使用Python和OpenCV的增强现实(第1部分),使用Python创建AR应用程序。或者使用Pygame AR示例。

是的,您可以使用python语言在unity中编程。

看看这个→ ...

或者,您可以使用这个Python解释器,但是它的评论不是很好

此外,您还可以使用IronPython从C#调用Python→ 从C#4.0程序运行IronPython脚本

但我不建议使用Python

Unity的主要开发语言是C#。我建议你学C。在这里阅读更多→ 如果我想在Unity中发展,我应该学习C#的基础知识还是立即开始发展


或者如果您熟悉并擅长OpenGL和OpenCV→ 请参考这个使用Python和OpenCV的增强现实(第1部分),使用Python创建AR应用程序。或者使用Pygame AR示例。

没有性能和维护的解决方案来执行此操作。有一些社区制作的解决方案,但它们对于生产游戏来说太不稳定了

您可以在webservices上托管此python脚本。您可以调用webserives,它将获取数据并进行处理,然后返回给您。这种方法可能是最简单、最有效的


如果不可能,您可以将python用于android。但是这会使事情复杂化,而且根本没有性能。

没有性能和维护的解决方案来做到这一点。有一些社区制作的解决方案,但它们对于生产游戏来说太不稳定了

您可以在webservices上托管此python脚本。您可以调用webserives,它将获取数据并进行处理,然后返回给您。这种方法可能是最简单、最有效的


如果不可能,您可以将python用于android。但这会使事情复杂化,而且根本没有性能。

我会回顾一下,您似乎试图像SQL数据库一样使用它,并试图在横向/纵向区域中选择项目,这可能是使用键/值存储的糟糕方式。请参阅:并且考虑我将回顾,因为您试图使用它像SQL数据库,并尝试选择在LAT /长区域中的项目,可能是使用密钥/值存储的糟糕方式。请参阅:并且考虑(链接已经死了,但在我的研究中,我发现了同一个帖子),所以这个问题是,除了在Unity中执行扫描请求,我还有一个功能性的游戏,而且它没有我需要的功能,所以我基本上被迫使用Python或其他替代品来进行这样的操作。(该链接已失效,但在我的研究中,我发现了相同的帖子)所以问题是,除了在unity中执行扫描请求之外,我还有一个功能正常的游戏,它没有我需要的功能,所以我基本上被迫使用python或其他替代方法来实现。谢谢你的评论,我将研究将脚本作为Web服务托管。这对我来说非常有意义。谢谢你的提醒现在,我将考虑将脚本作为Web服务托管。这对我来说是最有意义的。