Инициализация C# репозитория выполняется в директории src/repo/
командой:
python repo.py -t csharp -i
Для примера с использованием example.idl
, выполните следующие команды в директории src/repo/
:
python repo.py -t csharp -u example
python repo.py -t csharp -b example
Это создаст файлы, связанные с C# RPC, в директории src/repo/usr/example
.
example.idl
example.idl
Содержимое директории src/repo/usr/csharp/rpc_framework
представляет собой реализацию C# версии RPC.
using UnityEngine;
using kratos;
using rpc;
using System;
public class Network : MonoBehaviour
{
IRpc rpc_ = null; // RPC фреймворк
LoginProxy login_prx_ = null; // Локальный прокси для службы Login
// Интерфейс логирования
class Logger : kratos.ILogger
{
public void Debug(string log)
{
UnityEngine.Debug.Log(log);
}
public void Fail(string log)
{
UnityEngine.Debug.LogError(log);
}
public void Fatal(string log)
{
UnityEngine.Debug.LogError(log);
}
``````markdown
// Start is called before the first frame update
async void Start()
{
// Создание RPC-фреймворка
rpc_ = RpcFactory.create();
// Инициализация, создание логгера
rpc_.Initialize(new Logger());
// Включение автоматического повторного подключения
rpc_.AutoReconnect = true;
// Установка интервала автоматического повторного подключения в миллисекундах
rpc_.AutoReconnectIntervalMs = 1000;
// Использование Tick вместо реального времени, что позволяет снизить количество запросов к системному времени, но может привести к небольшой ошибке, которая не превышает одну кадровую длительность
rpc_.UseTickAsTimestamp = true;
// Включение вызова корутин для соединения с серверной группой
bool ret = await rpc_.Connect("127.0.0.1", 6888, 2000);
// Вывод результата подключения в лог
Debug.Log($"Connection completed: {ret}");
// Получение локальной версии агента Login
login_prx_ = Proxy.GetLogin();
}
``````markdown
// Update is called once per frame
void Update()
{
// Основной цикл RPC-фреймворка выполняется каждую фрейм
rpc_.Update();
}
private async void LateUpdate()
{
if (login_prx_ != null)
{
// Включаем корутину, которая вызывает метод Login::login каждый фрейм
var id = await login_prx_.login("123", "456");
Debug.Log($"Login result: {id}");
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )