Экспортированная версия не читает код должным образом, поэтому генератор не работает.
Вот экспортированный результат, когда карта нарисована :
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
}
}
}
Код: Выделить всё
[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