掃描全盤獲取文件路徑,這一個簡單的東西害我做了兩天,剛開始先看Resources,接著看AssetBundle和WWW,後面我驚奇的看到EditorUtility.OpenFilePanel ,
但是還是不對,最後高手們說c#可以解決這個問題,我就去看c#,先看了file類,後來看到Directory類,終於明白,裡面
有Directory.GetFiles(path:String),Directory.GetFiles(path:String,pattern:String)和Directory.GetFiles(path:String,pattern:String,SearchOption)
三種獲取路徑中的文件路徑的方法,第一種和第二種方法都可以運行,但第三種方法可以在電腦上(除了系統盤)以外的盤達到效果,在手機上就不能運行咯~~~~,怎麼辦了?
沒辦法,c#中還有一個Directory.GetDirectories(path:String)獲取路徑中子目錄的方法,所以我寫了一個遞歸函數,雖然在系統盤還是不行,但在手機就達到了我想要的效果。
- import System.IO;
-
- import System.Collections;
-
- var www : WWW;
-
- var files:String[];
-
- var file:ArrayList;
-
- function Start () {
-
- file=new ArrayList();
-
- he("/sdcard/","*.png",file);
-
- print(file.Count);
-
- }
-
- function Update(){
-
- if(Input.GetKey(KeyCode.Escape)){
-
- Application.Quit();
-
- }
-
- }
-
- function OnGUI(){
-
- GUI.Label(Rect(100,100,100,100),file.Count+"----"+files.Length);
-
- }
-
-
-
-
-
-
-
- function he(path:String,pattern:String,al:ArrayList){//如果al你用String[]的話,會報錯,說你的數組不夠大,所以我用ArrayList
-
- if(path!=null){
-
- var f1:String[]=Directory.GetFiles(path,pattern);
-
- for(var f11:String in f1){
-
- al.Add(f11);
-
- }
-
- var d1:String[]=Directory.GetDirectories(path);
-
- for(var d11:String in d1){
-
- var f2:String[]=Directory.GetFiles(d11,pattern);
-
- for(var f22:String in f2){
-
- al.Add(f22);
-
- }
-
- he(d11,pattern,al);
-
- }
-
- }
-
- }
unity3D真好~~~~,盡管我習慣用js寫代碼了,但是所有c#的函數在js裡面都可以用,呵呵~~~~,msdn也很好,謝謝你們~~~~~