unity 遍历Asset文件夹下带有中文名的文件及PNG格式文件


unity 遍历Asset文件夹下带有中文名的文件及PNG格式文件_第1张图片


今天遇到了一个问题,同事的APK包打不出来,有个提示,


我们猜想是里面有中文文件,过去做android游戏时,确实出现过因为中文名出的错,


一个一个查太费劲,于是就写了这个小功能,还算简单实用,分享给大家。


分两个类,


第一个类开始

#if UNITY_EDITOR_WIN


using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using System.Text.RegularExpressions;


public class JarodChinesNameHelper : MonoBehaviour {


public string assetFileName;
private List allFilePath = new List ();
private int chineseFileCount;
public void toSearch()
{
allFilePath.Clear();
addFilePathList (Application.dataPath + "/" + assetFileName);
chineseFileCount = 0;
foreach (string fileName in allFilePath) 
{
searchChineseName (fileName);
}
Debug.Log ("search finish ! chinesFile Total :" + chineseFileCount);
}


private void searchChineseName(string nameP)
{
string[] nameArray = Directory.GetFiles (nameP, "*.*");
foreach (string name in nameArray) 
{
if (HasChinese (name)) 
{
Debug.Log (name);
chineseFileCount += 1;
}
}
}


private void addFilePathList(string str)
{
allFilePath.Add (str);
string[] dirs = Directory.GetDirectories (str);
int length = dirs.Length;
for (int i = 0; i < length; ++i) 
{
addFilePathList (dirs [i]);
}
}


public  bool HasChinese( string str) 
{
return Regex.IsMatch(str, @"[\u4e00-\u9fa5]"); 



}


#endif


第一个类结束


第二个开始

#if UNITY_EDITOR_WIN


using UnityEngine;
using System.Collections;
using UnityEditor;


[CustomEditor(typeof(JarodChinesNameHelper))]
public class JarodChineseCreator : Editor {


public override void OnInspectorGUI()
{
DrawDefaultInspector ();
if (GUILayout.Button ("searchChinesName")) 
{
JarodChinesNameHelper helper = target as JarodChinesNameHelper;
helper.toSearch ();
}

}
}




#endif


#第二个类开始



不用运行,直接AddCompoent ,选择 JarodChineseNameHelper ,


之后,输入 你想要查找的文件夹名称, 之后点击 searchChineseName即可。


这里

 Directory.GetFiles (nameP, "*.*");


假如,我们只想查找 PNG格式图片,就可以改为 "*.png" ,这里的 "*.*"表示查找所有的文件。



你可能感兴趣的:(unity)