2

上下文:我正在尝试在装有 OSX 10.10 的 Mac 上将我的 Kinect v2 与 Unity3D 集成。我已经安装了所有需要的驱动程序(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”的定义

资产/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# 仍然太陌生,无法了解可能是什么发生在这里。任何猜测可能是什么原因造成的?

4

0 回答 0