Соответствующая часть метода компиляции (возвращает сборку)
Код: Выделить всё
string dll = //the absolute path...
if (File.Exists(dll)) {
return Assembly.LoadFrom(dll);
}
Код: Выделить всё
private void ExecuteModMethod(Mod mod, string methodName, object[] methodParameters)
{
if (!useMods) return;
Type type = mod.Assembly.GetType(mod.Name+".Main");
if (type == null) return;
MethodInfo method = type.GetMethod(methodName);
mod.Instance = Activator.CreateInstance(type);
if (method == null) return;
method.Invoke(mod.Instance, methodParameters);
}
Это единственный файл кода в моде:
Код: Выделить всё
using Godot;
namespace TestMod
{
public class Main
{
//Called when the game is loaded
public void _Ready()
{
GD.Print("Hello from the mod!");
}
}
}
ПРИМЕЧАНИЯ
< ul>
[*]Я знаю, что это действительно опасно и моддеры могут включить вредоносное ПО. Я разберусь с этой проблемой, вам не нужно упоминать, насколько она опасна, спасибо.
[*]Это единственная выдаваемая ошибка, путь к dll, тип, метод и mod.Instance не равны нулю. Проблема не в этом.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ed-assembl