我和我的 friend 正在为一款名为“Stickfight”的游戏开发“模组”。该 mod 是用 Kotlin 编写的(可与 Java 互操作),但由于我们无法调用方法,因此它受到限制。
这可能吗?有相关的库吗?
如果有帮助的话,Stickfight 是在 Unity 中制作的。
最佳答案
首先,您应该了解游戏是使用 Mono 还是 IL2CPP 编译的。 如果使用 IL2CPP,则原始 C# 代码现在是 C++(以 native 机器代码编译),因此您根本无法调用 C# 方法。如果使用 mono,您应该能够调用 C# 方法,但前提是游戏开发人员确实付出了一些努力来支持这种方式的修改(更多信息请参见此处): http://www.somasim.com/blog/2017/12/tech-notes-unity-game-modding/
当然这有很多问题,一个例子是它只与 Windows 平台兼容(但是 Unity 的一个很棒的事情是它可以通过非常小的努力实现跨平台支持(最主要的是要使其在移动设备上运行,需要创建一个触摸屏输入系统))。
Unity游戏不容易mod,原因是框架是跨平台的(有些平台不支持just-in-time,甚至IL2CPP也不支持)。唯一真正的解决方案是游戏的开发人员决定支持像 miniscript 或 Moonsharp 这样的脚本语言,但由于您不是开发人员,我建议您联系开发人员以了解他/她是否会尝试实现一些可以帮助您进行 retrofit 的东西。
关于java - 如何从 Java 调用正在运行的 C# 应用程序中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58370367/