为了在Unity中轻松卸载和加载本机插件,我目前正在使用LoadLibrary(DllPath)
。问题在于,由于它正在搜索给定的路径,因此对于UnityEditor,它查看root
文件夹(在Assets
旁边),对于已构建的play.exe
,它正在查找与play.exe
相同的目录。
因此,为了使该过程更高效,我希望能够在将.dll构建到play_data\plugins
中时自动将其复制到play.exe
文件夹中。我该如何以编程方式做到这一点?
答案 0 :(得分:0)
我相信您可以在脚本中使用UnityAPI OnPostprocessBuildAPI将dll复制到您的exe位置。
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
public class MyBuildPostprocessor
{
[PostProcessBuildAttribute(1)]
public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
{
Debug.Log( pathToBuiltProject );
File.Copy("Oringal File",pathToBuiltProject + "\play_data\plugins\" + Your dll);
}
}
选项“ pathToBuiltProject ”将为您提供可执行位置。您可以使用 pathToBuiltProject 导航到“ play_data \ plugins”。我使用此API移动自定义运行时文件。
我还意识到您说您正在从LoadLibrary(DllPath)
进行加载。那么这是否意味着您没有在资产的Plugin文件夹中包含dll?因为编译后,Unity项目中Plugin文件夹中的dll被添加到“ yourprogramName_data \ Plugins”中。如果是这样,那么您可能想要添加将dll保留在plugins文件夹中,并让Unity自动为您完成。并且,如果您具有在构建完成后动态需要添加到plugins文件夹中的dll,则可以使用第一种方法。