歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Unity3D 掃描全盤獲取文件路徑

Unity3D 掃描全盤獲取文件路徑

日期:2017/3/1 10:23:55   编辑:Linux編程

掃描全盤獲取文件路徑,這一個簡單的東西害我做了兩天,剛開始先看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. import System.Collections;
  3. var www : WWW;
  4. var files:String[];
  5. var file:ArrayList;
  6. function Start () {
  7. file=new ArrayList();
  8. he("/sdcard/","*.png",file);
  9. print(file.Count);
  10. }
  11. function Update(){
  12. if(Input.GetKey(KeyCode.Escape)){
  13. Application.Quit();
  14. }
  15. }
  16. function OnGUI(){
  17. GUI.Label(Rect(100,100,100,100),file.Count+"----"+files.Length);
  18. }
  19. function he(path:String,pattern:String,al:ArrayList){//如果al你用String[]的話,會報錯,說你的數組不夠大,所以我用ArrayList
  20. if(path!=null){
  21. var f1:String[]=Directory.GetFiles(path,pattern);
  22. for(var f11:String in f1){
  23. al.Add(f11);
  24. }
  25. var d1:String[]=Directory.GetDirectories(path);
  26. for(var d11:String in d1){
  27. var f2:String[]=Directory.GetFiles(d11,pattern);
  28. for(var f22:String in f2){
  29. al.Add(f22);
  30. }
  31. he(d11,pattern,al);
  32. }
  33. }
  34. }

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

Copyright © Linux教程網 All Rights Reserved