作者:倩倩 | 来源:互联网 | 2023-09-25 15:20
扫描全盘获取文件路径,这一个简单的东西害我做了两天,刚开始先看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){
-
- 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也很好,谢谢你们~~~~~