[Unity] Можно ли опубликовать http-запрос при выполнении редактора Unity и после его закрытия? - PullRequest
0 голосов
/ 22 января 2020

Я хочу отправить System.Environment.UserName в базу данных со статусом при открытии и закрытии единицы! Не при воспроизведении сцены. При открытии единицы я хочу обновить статус «ВКЛ» и при закрытии статуса «ВЫКЛ» или 1 и 0 в базе данных.

Ответы [ 3 ]

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

Даже если ваш вопрос довольно широкий ...


Да, есть!

Вы можете использовать UnityWebRequest так, как вы обычно не : без сопрограммы. Во время открытия и закрытия редактора это, вероятно, не так уж и плохо, если во время веб-запроса есть небольшая задержка, поэтому мы можем использовать простой блокирующий вызов в этом конкретном случае использования c.

Так что просто подождите его до фини sh в обычном while л oop. Я только что создал пример, используя простые UnityWebRequest.Get для некоторых случайных изображений в Google, но вы можете легко заменить его на более сложный UnityWebRequest.Post.

Просто запустите запрос на открытие через InitializeOnLoadMethod, а также зарегистрируйте обратный вызов на EditorApplication.wantsToQuit, чтобы вызвать запрос на закрытие, когда Unity пытаются закрыть. Таким образом, редактор может быть закрыт только в том случае, если обратный вызов для EditorApplication.wantsToQuit вернул true.

Убедитесь, что этот файл помещен в папку с именем Editor.

*. 1036 *

Примечание: В настоящее время редактор не может быть закрыт обычным способом в случае сбоя запроса на закрытие, поэтому вы можете настроить его в соответствии со своими потребностями. Если, например, результат запроса на закрытие не так важен, вы можете вместо этого добавить простой void в качестве обратного вызова к EditorApplication.quitting.


Как небольшую демонстрацию, что он Здесь вы можете увидеть, что при открытии проекта Assets/StreamingAssets/open.txt создается.

Когда я закрываю проект, Assets/StreamingAssets/open.txt удаляется и вместо него создается Assets/StreamingAssets/closed.txt.

enter image description here

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

Еще один способ сделать это - использовать скрипт, который запускает Unity и выполняет запросы HTTP Posts.

Например, в powershell:

# Post to an url the params
$postParams = @{username=$Env:UserName;status='ON'}
Invoke-WebRequest -Uri http://example.com -Method POST -Body $postParams

# Start Unity and wait it's closed
Start-Process $pathToUnityExecutable -Wait

# Post the new status
$postParams = @{username=$Env:UserName;status='OFF'}
Invoke-WebRequest -Uri http://example.com -Method POST -Body $postParams
0 голосов
/ 22 января 2020

Пожалуйста, проверьте скрипт редактора здесь, который поможет вам с редактором загрузки.

Ссылка

using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
public class Startup {
    static Startup()
    {
        Debug.Log("Up and running");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...