如何在Unity / Mac中重置或重新导入插件?

Fat*_*tie 3 macos xcode unity-game-engine unity3d-native-plugins

使用本地低级插件.. Mac版本获取Unity项目。

在此处输入图片说明

在Xcode插件项目中进行少量更改,然后进行构建。

现在,您在Unity项目中有了新的插件库。

如果再次“构建”,当然,最终的Mac应用程序现在将包含新库-没问题。

但是...

如果您在编辑器中点击播放

它不会接收库中的更改。

实际上似乎:

每次在Unity中更改库时,都必须重新启动Unity!

已经尝试了所有操作,例如“重新导入所有资产”,AssetDatabase.Refresh,重命名等。看来您实际上必须重新启动Unity。

这有什么关系?


有关更多信息:

看来mac共享库/捆绑包无法卸载。文章:

https://docstore.mik.ua/orelly/unix3/mac/ch05_03.htm

显然,此问题已在10.5中修复:

https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/dlclose.3.html

也许Unity现在可以解决这个问题。按照他们通常的节奏,它应该在2035年左右的任何时候发生。

Rem*_*_rm 5

可悲的是,这归结于您对此无能为力。

根据.net的DLL处理,如果不关闭应用程序域,则无法单独卸载DLL。当Unity拾取对DLL所做的更改时,旧版本将保留在内存中,并在运行时在编辑器中使用。您可以通过在编辑器中删除本机插件来执行此操作,以使其“有趣”。确认要删除文件。该文件将从检查器中消失。但是,如果右键单击该文件夹并刷新(ctrl + r),您将看到文件已重建(在单击“全部重新导入”时也会发生此情况,因为尽管统一重启,但应用程序域未关闭)。

但是,在构建应用程序时,它将使用本地存储的文件,而不是内存存储的文件。因此,插件将在构建中进行更新。

如果不卸载包含该程序集的所有应用程序域,则无法卸载该程序集。即使程序集超出范围,实际的程序集文件也将保持加载状态,直到包含该程序集的所有应用程序域都被卸载为止。

资源

这已经有一段时间了,人们已经尝试解决和/或修复问题,但是据我所知,目前存在的“解决方法”仅适用于Windows。这里是一些有关此讨论的链接。

我想的东西,可以做的是写一个包装,当DLL已经被编辑会自动重新启动统一......虽然这不会解决的问题,它会ATLEAST让它有点麻烦少。