2011-11-23 47 views

回答

6
  1. 我的解決方法是將文件從Application.streamingAssetsPath(這是一個罐子內,不能老是被大多數本地庫訪問)的Application.persistentDataPath(這是完全正常)複製,然後通過到本機代碼的路徑。
  2. 該項目的源文件都應該在資產\ StreamingAssets

在C#小樣本代碼複製文件異步: 添加這種方法它繼承MonoBehaviour

IEnumerator CopyFileAsyncOnAndroid() 
{ 
    string fromPath = Application.streamingAssetsPath +"/"; 
    //In Android = "jar:file://" + Application.dataPath + "!/assets/" 
    string toPath = Application.persistentDataPath +"/"; 

    string[] filesNamesToCopy = new string[] { "a.txt" ,"b.txt"}; 
    foreach (string fileName in filesNamesToCopy) 
    { 
     Debug.Log("copying from "+ fromPath + fileName +" to "+ toPath); 
     WWW www1 = new WWW(fromPath +fileName); 
     yield return www1; 
     Debug.Log("yield done"); 
     File.WriteAllBytes(toPath+ fileName, www1.bytes); 
     Debug.Log("file copy done"); 
    } 
    //ADD YOUR CALL TO NATIVE CODE HERE 
    //Note: 4 small files can take a second to finish copy. so do it once and 
    //set a persistent flag to know you don`t need to call it again 
} 
+0

現在是2016年...有沒有更容易的解決方案來訪問StreamingAssets中的文件在Android插件? – Piotr

0

在運行時訪問文件僅限於目錄資產/資源。放置在那裏的所有東西都可以通過Resources.Load方法訪問(doc),但是沒有機會從文件夾外部獲取某些內容。

在資產/資源文件夾中,您可以設置任意文件夾結構。我在一個iPhone項目中使用它來從預定義的文本文件構建級別,並且它像一個魅力一樣工作。

+0

感謝一個腳本,它真的有幫助。 – arsalank2

+0

雖然Resources.Load不是本地方法。其他人是否願意提供一些關於從本地代碼中的資產/資源加載的指導(例如iOS上的Objective C,Android上的C++(NDK))? – bleater

+0

Assaf只是提供另一種方法來訪問Assets/Resources文件夾之外的數據[Unity Manual](http://docs.unity3d.com/Manual/StreamingAssets.html) – Casabian