【发布时间】: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