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)获取路径中子目录的方法,所以我写了一个递归函数,虽然在系统盘还是不行,但在手机就达到了我想要的效果。

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);          

    }   

  } 

}

      不好意思,以上内容是昨天写的,我在手机上和系统盘好好试了一下还是不行,抛出一个异常,最后我用try-catch就搞定了,以下代码可以运行了:

function he(path:String,pattern:String,al:ArrayList){

 if(path!=null){    

   var f1:String[]=Directory.GetFiles(path,pattern); 

   var d1:String[];        

   for(var f11:String in f1){

      al.Add(f11);

   }  

   try{ 

   d1=Directory.GetDirectories(path);

   for(var d11:String in d1){

      try{ he(d11,pattern,al);}

      catch(Exception){}                 

    }     

   }catch(Exception){} 



  }

}



unity3D真好~~~~,尽管我习惯用js写代码了,但是所有c#的函数在js里面都可以用,呵呵~~~~,msdn也很好,谢谢你们~~~~~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值