Запуск программы python в единстве на android - PullRequest
0 голосов
/ 22 января 2020

TLDR. Какими различными способами я могу запустить программу python в единстве на устройстве android.

Это приложение для android, в котором хранится геолокация, которая будет запрошена позже на других устройствах.

Я знаю про Iron Python, но он не обновляется для python 3+, что я и написал для программы python, которую мне нужно запустить.

more предыстория: я пытаюсь использовать AWS DynamoDB, который имеет 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 программу в тип файла, который может быть запущен на * Устройство 1026 * через Unity's c#.

В настоящее время я просто печатаю информацию, полученную от DynamoDB, но я был бы открыт для непосредственного чтения или записи в файл для чтения в единстве, если это необходимо.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Там нет никакого действенного и поддерживаемого решения для этого. Есть некоторые решения, разработанные сообществом, но они слишком нестабильны для производственной игры.

Вы можете разместить этот скрипт python на веб-сервисах. Вы можете вызвать webserives, он получит данные и обработает их, а затем вернет вам. Этот способ, вероятно, самый простой и эффективный.

Если это невозможно, вы можете использовать python -for- android. Но это сильно усложняет и совсем не делает.

1 голос
/ 22 января 2020

Да, вы можете использовать язык python для программирования в единстве.

Проверьте это → http://forum.unity3d.com/threads ...

В качестве альтернативы вы можете использовать этот Python переводчик, но его обзоры не так хороши.

Также вы можете позвонить Python с C#, используя Iron Python → Running Iron Python Скрипты из C# 4.0 Программа

Но я бы НЕ предлагал использовать Python ...

Основной язык разработки Unity - C#. Я рекомендую вам выучить C#. Подробнее здесь → Если я хочу развиваться в Unity, должен ли я изучить основы C# или начать разработку прямо сейчас?

Или Если вы знакомы и хороши в Open GL и Open CV → обратитесь к этому дополнению реальность с Python и OpenCV (часть 1) для создания приложения AR с использованием Python. или используйте пример Pygame AR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...