system.io.file'在Unity中的webplayer上不包含readalltext的定义

时间:2015-03-24 12:56:31

标签: c# unity3d

如果我将平台切换到网络播放器,我会收到错误system.io.file' does not contain a definition for readAllTex,此方法不起作用,但如果我将平台目标切换到pc

,它会起作用
string readPath(){
    string filepath = "wsPath.txt";
    string wspath=Environment.NewLine;

    if (File.Exists(filepath))
         wspath = File.ReadAllText(filepath);

    return wspath;
}

1 个答案:

答案 0 :(得分:2)

这是由于网络播放器的沙盒安全性,它具有一定的限制,以防止恶意代码通过浏览器由统一应用程序执行。

Unity的文档包含一个解释此内容的页面:

http://docs.unity3d.com/Manual/SecuritySandbox.html

其中包括以下对限制的简要说明:

  • 访问托管以外的域上的数据的限制 你的.unity3d文件。
  • 对套接字使用的一些限制。
  • 禁止调用我们认为不受限制的任何方法。 (事情
    比如File.Delete等。)
  • 禁止使用System.Reflection。*来调用private / internal 你没有自己写的课程中的方法。

简而言之,您无法使用System.IO命名空间直接访问文件系统。这已被Unity故意禁用。

最佳做法是使用PlayerPrefs,或通过远程Web服务加载/保存数据。这里有关于这个主题的讨论:

http://forum.unity3d.com/threads/read-write-text-files-from-unity-webplayer.19046/