歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Unity3D 掃描全盤獲取文件路徑

掃描全盤獲取文件路徑,這一個簡單的東西害我做了兩天,剛開始先看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)獲取路徑中子目錄的方法,所以我寫了一個遞歸函數,雖然在系統盤還是不行,但在手機就達到了我想要的效果。

  1. import System.IO;  
  2.   
  3. import System.Collections;  
  4.   
  5. var www : WWW;  
  6.   
  7. var files:String[];  
  8.   
  9. var file:ArrayList;  
  10.   
  11. function Start () {  
  12.   
  13.     file=new ArrayList();  
  14.   
  15.     he("/sdcard/","*.png",file);  
  16.   
  17.     print(file.Count);  
  18.   
  19. }  
  20.   
  21. function Update(){  
  22.   
  23.    if(Input.GetKey(KeyCode.Escape)){  
  24.   
  25.       Application.Quit();  
  26.   
  27.    }  
  28.   
  29. }  
  30.   
  31. function OnGUI(){  
  32.   
  33.    GUI.Label(Rect(100,100,100,100),file.Count+"----"+files.Length);  
  34.   
  35. }  
  36.   
  37.   
  38.   
  39.   
  40.   
  41.   
  42.   
  43. function he(path:String,pattern:String,al:ArrayList){//如果al你用String[]的話,會報錯,說你的數組不夠大,所以我用ArrayList   
  44.   
  45.  if(path!=null){       
  46.   
  47.    var f1:String[]=Directory.GetFiles(path,pattern);  
  48.   
  49.    for(var f11:String in f1){  
  50.   
  51.      al.Add(f11);  
  52.   
  53.    }  
  54.   
  55.    var d1:String[]=Directory.GetDirectories(path);  
  56.   
  57.    for(var d11:String in d1){  
  58.   
  59.       var f2:String[]=Directory.GetFiles(d11,pattern);        
  60.   
  61.         for(var f22:String in f2){  
  62.   
  63.         al.Add(f22);  
  64.   
  65.         }  
  66.   
  67.         he(d11,pattern,al);            
  68.   
  69.     }     
  70.   
  71.   }   
  72.   
  73. }  

unity3D真好~~~~,盡管我習慣用js寫代碼了,但是所有c#的函數在js裡面都可以用,呵呵~~~~,msdn也很好,謝謝你們~~~~~

Copyright © Linux教程網 All Rights Reserved