Godot (4.3) Проблема с экспортом в Windows, неожиданное поведение сценария C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Godot (4.3) Проблема с экспортом в Windows, неожиданное поведение сценария C#

Сообщение Anonymous »

В движке Godot я создал генератор, который выбрасывает на карту различные ссылки на объекты и сравнивает доступные позиции. Он полностью основан на коде C# и использует классический экспорт Windows. Он требует большого количества вычислений, поэтому вы ожидаете некоторую задержку перед выполнением расчета.
Экспортированная версия не читает код должным образом, поэтому генератор не работает.
Вот экспортированный результат, когда карта нарисована :
4 запомненный актив 4 4 14 14 4 4 || пятна 14 0 0 14 || активы на карте 0 0 0 0
ОШИБКА: System.ArgumentOutOfRangeException: указанный аргумент находился вне диапазона допустимых значений. (Параметр 'index')
в Godot.Collections.Array.GetVariantBorrowElementAt(Int32 index, godot_variant& elem)
в Godot.Collections.Array`1.get_Item(Int32 index)
в Godot. Node.InvokeGodotClassMethod(godot_string_name& метод, NativeVariantPtrArgs args, godot_variant& ret)
at WorldBehaviour2.InvokeGodotClassMethod(godot_string_name& метод, NativeVariantPtrArgs args, godot_variant& ret) 4
at Godot.Bridge.CSharpInstanceBridge .Call(IntPtr godotObjectGCHandle, godot_string_name* метод, godot_variant** arg)
at: void Godot.NativeInterop.ExceptionUtils.LogException(System.Exception) (:0)
И вот ожидаемый результат моделирования :
4 запомненный актив 4 4 4 4 4 4 || пятна 0 0 0 0 || активы на карте 0 0 0 0
пятна на карте 31 диаметр [49, 74, 70, 51, 72, 66, 47, 73, 51, 81, 67, 52, 83, 46, 81, 46, 60, 69, 56, 69, 43, 63, 51, 57, 45, 52, 63, 58, 48, 45, 46]
Запомненные элементы кажется, помещены в другой слот списка без причины, и код не использует определенную библиотеку, которая может быть неправильно экспортирована
Код слишком длинный, поэтому я кратко опишу логику:

Код: Выделить всё

public override void _Ready() {
SetDefault();
CallDeferred(nameof(DrawLargeMap));
}

// Once the code starts
public void DrawLargeMap() {
DrawCoverage(100); // Generate 100 Vector3 and add them on a Vector3 list

// For each spot we select items
for (int i = 0 ; i < spots.Count ; i++) {
SelectObj(context[i]);  // select objets on a list
// For each selected object, we define the object properties on list
for (int j = 0 ; j < selectedObj.Count ; j++) {
SelectOnMap(i, selectedObj[j]); // select objets No already drawn on a list
(...)
SetOnMap(); // Set the objet on some list that define it's properties
}
}
}
Каждый вызываемый метод представляет собой базовый метод void с параметрами, без асинхронности или чего-то еще, каждый список выглядит следующим образом:

Код: Выделить всё

[Export]
public Godot.Collections.Array spots { get; set; }
[Export]
public Godot.Collections.Array spotDiameter { get; set; }
public Godot.Collections.Array spotMap { get; set; }
[Export]
public Godot.Collections.Array context { get; set; }
Я попытался решить эту неожиданную проблему, снизив затраты на создание карты, удалив "отложенный вызов" на более простой метод вызова, и даже добавление его в обновление, похоже, та же проблема, код просто ведет себя по-другому.
Я не могу запускать каждый метод отдельно для конкретного отложенного вызова без нарушения логики (нужно читать в определенном порядке), и мне не нужно запускать его в реальном времени.
Моя единственная известная проблема может заключаться в используемой системе списков или низкоуровневом чтении памяти, которое может не использоваться в среде dotnet так, как я предполагал. Я не знаю ответа
Кажется, эти потоки можно использовать, но я действительно не знаю, как их использовать и полезно ли это здесь.
Есть ли какая-либо известная проблема экспорта на C# с экспортом Windows для 4.3 Godot или какие-либо настройки безопасности/считывания памяти, когда они упакованы как продукт?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -behaviour
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как играть в мультиплеер в Godot и Python, Python — это сервер, а Godot — клиент
    Гость » » в форуме Python
    0 Ответы
    91 Просмотры
    Последнее сообщение Гость
  • Библиотека C# (Harmony) работает должным образом в редакторе Godot, но не работает в сборке Godot.
    Anonymous » » в форуме C#
    0 Ответы
    71 Просмотры
    Последнее сообщение Anonymous
  • Вызов C++ DLL только с экспортом __declspec из C#
    Anonymous » » в форуме C++
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • .dll и .dll с экспортом, в чем разница?
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с экспортом данных в Excel с помощью ClosedXML и шаблона XLSX
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»