菜鸟教程小白 发表于 2022-12-13 13:46:33

c# - 未授权访问异常 : Access to the path [ iOS/Unity3D ]


                                            <p><p>我需要你的帮助,所以昨天我想将我的游戏移植到iOS,这不是我第一次移植它,以前的版本总是成功移植,但现在不是</p>

<p>我在 El Capitan 上使用 Unity 5.3.4 和 5.3.5 和 Xcode 7.3,它成功地从 XCode 编译,但我在场景开始时初始化和生成的所有对象都不会出现在游戏中,我不知道它有什么问题,因为 Unity 或 XCode 本身没有错误</p>

<p>但从日志中,我怀疑是因为这个</p>

<blockquote>
<p>UnauthorizedAccessException: Access to the path&#34;/var/mobile/Containers/Data/Application/280DC265-ABD8-41A3-8B87-74D09910FB24/Documentstemp.gjk&#34; is denied.
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) in :0
at System.IO.StreamWriter..ctor (System.String path, Boolean append) in :0
at System.IO.File.CreateText (System.String path) in :0</p>
</blockquote>

<p>我假设是因为在启动时,游戏将使用 WWW 方法从安全网站访问纹理/ Sprite ,使用 HTTP 而不是 HTTPS,并尝试在 Application.PersistentDataPath 下载并将其保存为 Sprite ,然后将其应用到游戏中</p>

<p>它在 Android 上运行良好,但不知何故 iOS 不允许读取/写入文件,导致错误</p>

<p>这是我使用的代码片段:</p>

<pre><code>IEnumerator getBillboard()
{
    WWW getBillboardlistURL = new WWW(billboardlistURL);
    yield return getBillboardlistURL;

    if (getBillboardlistURL.error != null)
    {

    }
    else
    {


      WWW imageLink = new WWW(pictLink);
      yield return imageLink;
      Texture2D imageTemp = imageLink.texture;
      obj.transform.GetChild(0).GetComponent&lt;SpriteRenderer&gt;().sprite = Sprite.Create(imageTemp, new Rect(0, 0, imageTemp.width, imageTemp.height), new Vector2(0.5f, 0.5f));
      obj.name = namaProduk;

                print(&#34;BILLBOARD ONLINE&#34;);

      /// ======= WRITE BILLBOARD NAME TO FILE AND SAVE IT =======



      /// ======================= END ============================


      var bytes = imageLink.texture.EncodeToPNG();

      //print(Application.dataPath);

      //cek file
      if(redownloadImage)
                {
                  File.WriteAllBytes(Application.persistentDataPath + &#34;/vendorBillboard/&#34; + namaProduk + &#34;.png&#34;, bytes);
                  print(&#34;REDOWNLOAD SEMUA TEXTURE!&#34;);
                }

                obj.SetActive(false);
                billboardPool.Add(obj);
            }
      }

    }
}
</code></pre>

<p>是否有解决方法或解决方法?</p>

<p>提前谢谢你</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>查看异常并将其与您的代码进行比较,我认为您提供的代码不是发生错误的地方...原因有两个:</p>

<ol>
<li><p>异常显示“UnauthorizedAccessException:访问路径”/var/mobile/Containers/Data/Application/280DC265-ABD8-41A3-8B87-74D09910FB24/Documentstemp.gjk“被拒绝”。但是,在您的代码中,您的路径中有 <code>/vendorBillboard/</code>。注意 <code>/vendorBillboard/</code> 不在异常的路径中。</p></li>
<li><p>在异常结束时,它指出问题出在 <code>System.IO.File.CreateText (System.String path)</code>,但是,您使用了 <code>System.IO .File.WriteAllBytes()</code> 在您的代码中。</p></li>
</ol>

<p>我猜您正在“其他地方”创建一个文本文件,并且您使用的是 <code>Application.dataPath</code> 而不是 <code>Application.persistentDataPath</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于c# - 未授权访问异常 : Access to the path [ iOS/Unity3D ],我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37830969/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37830969/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: c# - 未授权访问异常 : Access to the path [ iOS/Unity3D ]