C# System.IO.File работает на Mac OSX
КОНТЕКСТ: Я пытаюсь интегрировать мой Kinect v2 с Unity3D на Mac с OSX 10.10. У меня установлены все необходимые драйверы (afaik: libfreenect, openni2, nite, libusb и т. Д.), И я использую эту библиотеку ресурсов Unity.
ПРОБЛЕМА: Кажется, что большинство из них работает, но у меня проблема с функциями System.IO.File для записи данных в файлы. Ошибки компилятора:
Assets / KinectScripts / KinectWrapper.cs (391,38): ошибка CS0117: "System.IO.File" не содержит определения для "WriteAllText"
Assets/KinectScripts/KinectWrapper.cs(458,38): ошибка CS0117: "System.IO.File" не содержит определения для "WriteAllText"
Assets/KinectScripts/KinectWrapper.cs(536,38): ошибка CS0117: "System.IO.File" не содержит определения для "WriteAllBytes"
Он вызывается из этих разделов кода (который я не писал):
L383-399:
if(!File.Exists("OpenNI.ini"))
{
Debug.Log("Copying OpenNI2 configuration...");
TextAsset textRes = Resources.Load("OpenNI.ini", typeof(TextAsset)) as TextAsset;
if(textRes != null)
{
string sResText = textRes.text.Replace("%OPENNI_REDIST_DIR%", sOpenNIPath);
File.WriteAllText("OpenNI.ini", sResText);
bOneCopied = File.Exists("OpenNI.ini");
bAllCopied = bAllCopied && bOneCopied;
if(bOneCopied)
Debug.Log("Copied OpenNI2 configuration.");
}
}
L450-466:
if(!File.Exists("NiTE.ini"))
{
Debug.Log("Copying NiTE2 configuration...");
TextAsset textRes = Resources.Load("NiTE.ini", typeof(TextAsset)) as TextAsset;
if(textRes != null)
{
string sResText = textRes.text.Replace("%NITE_REDIST_DIR%", sNiTEPath);
File.WriteAllText("NiTE.ini", sResText);
bOneCopied = File.Exists("NiTE.ini");
bAllCopied = bAllCopied && bOneCopied;
if(bOneCopied)
Debug.Log("Copied NITE2 configuration.");
}
}
L528-545
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
if(!File.Exists("libUnityInterface2.dylib"))
{
Debug.Log("Copying UnityInterface2 library...");
TextAsset textRes = Resources.Load("libUnityInterface2.dylib", typeof(TextAsset)) as TextAsset;
if(textRes != null)
{
File.WriteAllBytes("libUnityInterface2.dylib", textRes.bytes);
bOneCopied = File.Exists("libUnityInterface2.dylib");
bAllCopied = bAllCopied && bOneCopied;
if(bOneCopied)
Debug.Log("Copied UnityInterface library.");
}
}
#endif
Я потратил достаточно времени на это, чтобы понять, что не похоже, что WriteAllText/Bytes должны выдавать такую ошибку, поскольку в документах определенно говорится, что они существуют, но я все еще слишком плохо знаком с C#, чтобы понять, что может быть здесь происходит Есть предположения, что может быть причиной этого?