AFS
AFS

Reputation: 1443

system.io.file' does not contain a definition for readalltext on webplayer in Unity

If I switch the platform to web player i get the error system.io.file' does not contain a definition for readAllTex ,this method doesn't work,but it works if I swtch the platform target to pc

string readPath(){
    string filepath = "wsPath.txt";
    string wspath=Environment.NewLine;

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

    return wspath;
}

Upvotes: 1

Views: 3640

Answers (1)

olitee
olitee

Reputation: 1683

This is due to the sandboxing security of the webplayer, which has certain limitations imposed to prevent malicious code being executed by a unity application via the browser.

Unity's docs include a page explaining this:

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

Which includes the following brief description of the limitations:

  • Restrictions on accessing data on a domain other than the one hosting your .unity3d file.
  • Some limitation on the usage of the Sockets.
  • Disallowing invocation of any method we deemed off limits. (things
    like File.Delete, etc).
  • Disallowing the usage of System.Reflection.* to call private/internal methods in classes you did not write yourself.

In short, you cannot access the filesystem directly using the System.IO namespace. This has been disabled intentionally by Unity.

The best practice is to use the PlayerPrefs, or to load/save data via a remote web service. There's a discussion on the topic here:

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

Upvotes: 2

Related Questions