【问题标题】:Accessing MemoryMappedFiles in Unity在 Unity 中访问 MemoryMappedFiles
【发布时间】:2016-12-24 18:01:07
【问题描述】:

我需要使用 System.IO.MemoryMappedFiles 命名空间,但不断收到 Unity 的投诉,称 MemoryMappedFiles 命名空间在 System.IO 中不存在。我猜那是因为 Unity 使用了类似 mono 的 .NET 2.0 实现,它不包含这个命名空间。我还尝试创建一个 Plugins 目录(Assets/Scripts/Plugins)并将 System.Core.dll(来自 /mono/2.0)复制到该目录目录。但是,当我尝试在我的一个脚本中使用以下函数时,仍然找不到 MemoryMappedFile:

static object ReadObjectFromMMF(string mmfFile)
{
    // Get a handle to an existing memory mapped file
    using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(mmfFile, FileMode.Open))
    {
        // Create a view accessor from which to read the data
        using (MemoryMappedViewAccessor mmfReader = mmf.CreateViewAccessor())
        {
            // Create a data buffer and read entire MMF view into buffer
            byte[] buffer = new byte[mmfReader.Capacity];
            mmfReader.ReadArray<byte>(0, buffer, 0, buffer.Length);

            // Convert the buffer to a .NET object
            return ByteArrayToObject(buffer);
        }
    }
}

还有其他方法可以从 Unity 访问 MemoryMappedFile 吗?

编辑:

实际上,我只是想将数据从另一个 C# 应用程序传输到我的 Unity 应用程序。它不一定是 MemoryMappedFile。我只是在寻找任何简单的方法来使用 Unity 执行进程间通信。我在 Unity 文档中搜索了使用 Unity 执行 IPC 的推荐方法(例如,在 Unity 应用程序和另一个应用程序之间共享对象)。由于 Unity 使用旧版本的 Mono(即 .NET 2.0 之类的 mono 实现),我找不到这样做的方法。如果有人能告诉我在哪里可以找到这方面的一些信息,那就太好了。

【问题讨论】:

    标签: c# mono unity3d memory-mapped-files


    【解决方案1】:

    尝试将最近的 System.dll 复制到您的资产文件夹中,而不是插件。

    可以从那里访问核心 .dll 文件。

    【讨论】:

    • 你说的最近是什么意思?我刚刚将System.dllC:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0 复制到我的Assets 文件夹中,但我仍然收到错误消息,提示找不到命名空间“MemoryMappedFile”的类型。
    • 您需要确保它是 .NET 3.5 和更低版本的程序集,.NET 4 程序集将无法工作,因为编译后的代码与 unity 支持的代码不兼容(它不向后兼容)。跨度>
    • 如果你有Unity Pro,你可以试试原生API; docs.unity3d.com/Manual/Plugins.html
    【解决方案2】:

    你可以试试CreateFileMapping, OpenFileMapping,MapViewOfFile from kernel32.dll

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      • 2018-06-14
      相关资源
      最近更新 更多