清理本地游戏数据
[MenuItem ("Game/清理本地游戏数据 %k")]
private static void CleanData () {
string[] dataArr = Directory.GetFileSystemEntries (Application.persistentDataPath);
foreach (string data in dataArr) {
if (File.Exists (data)) {
File.Delete (data);
}
if (Directory.Exists (data)) {
Directory.Delete (data);
}
}
PlayerPrefs.DeleteAll ();
Debug.Log ("清理完成。");
}
Directory.GetFileSystemEntries(_path):获取路径下所有的文件和文件夹的名称。
PlayerPrefs.DeleteAll():清除PlayerPrefs下所有的数据。
获取gameObject的路径
有时我们在代码中需要获取到gameObject的路径,例如transform.Find("XX/XX/XX/XX/XX/XX");如果层级很多写起来就比较麻烦,而且可能写错,这里的方法可以在Hierarchy窗口里选中gameObject时右键点出窗口来将路径放入剪贴板,在ctrl+v即可。
//递归调用获取路径
private static string GetPath (GameObject go) {
Transform trans_parent = go.transform.parent;
if (trans_parent == null) {
return go.name;
} else {
return GetPath (trans_parent.gameObject) + "/" + go.name;
}
}
[MenuItem ("GameObject/GetPath &c", priority = 0)]
private static void RootPath () {
GameObject go = Selection.activeGameObject;
if (go == null) {
return;
}
string path = GetPath (go);
EditorGUIUtility.systemCopyBuffer = path;
Debug.Log (path + "\n获取路径成功。");
}
先使用递归获取路径,再将获取到的string放入剪切板即可。
MenuItem 里的&c 表示快捷键是 Alt + C ,%c则表示为Ctrl + C。
priority = 0 表示优先级,即在弹出窗口中的顺序。
判断Text里是否用到了Arial字体
有时Text如果用了默认的Arial字体,会在设备中显示异常,以下的方法可以筛选出包含Arial的Text并选中它。
[MenuItem ("Game/Find Text With Arial &2")]
private static void FindTextWithArial () {
GameObject go = GameObject.Find ("Canvas");
Text[] textArr = go.GetComponentsInChildren<Text> ();
foreach (Text text in textArr) {
bool haveTarget = false;
if (text.font == null) {
Debug.Log ("无字体");
haveTarget = true;
} else {
if (text.font.name == "Arial") {
Debug.Log ("该字体为 Arial的Text路径 path =" + GetPath (text.gameObject));
haveTarget = true;
}
}
if (haveTarget) {
Selection.activeGameObject = text.gameObject;
return;
}
}
}
设置自定义宏
[MenuItem ("Game/设置 ASYNC_MODE")]
private static void SetAsyncMode () {
string symbol = "ASYNC_MODE";
PlayerSettings.SetScriptingDefineSymbolsForGroup (BuildTargetGroup.Android, symbol);
PlayerSettings.SetScriptingDefineSymbolsForGroup (BuildTargetGroup.Standalone, symbol);
PlayerSettings.SetScriptingDefineSymbolsForGroup (BuildTargetGroup.iOS, symbol);
}