42.EditorUtility-其他内容
42.1 知识点
压缩纹理
void EditorUtility.CompressTexture(Texture2D texture, TextureFormat format, TextureCompressionQuality quality);
可以将纹理显式压缩为指定的格式
该知识点会配合之后的资源导入相关知识点使用
查找对象依赖项
object[] EditorUtility.CollectDependencies(Object[] roots);
返回对象所依赖的所有资源列表
private void OnGUI()
{
objTest1 = EditorGUILayout.ObjectField("想要查找关联资源的对象", objTest1, typeof(GameObject), true) as GameObject;
if (GUILayout.Button("检索依赖资源"))
{
Object[] objs = EditorUtility.CollectDependencies(new Object[] { objTest1 });
// 用Selection类选中所有依赖的资源
Selection.objects = objs;
}
}
更多内容
官方文档:EditorUtility
42.2 知识点代码
Lesson42_EditorUtility_其他内容
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson42_EditorUtility_其他内容 : MonoBehaviour
{
void Start()
{
#region 知识点一 压缩纹理
//void EditorUtility.CompressTexture(Texture2D texture, TextureFormat format, TextureCompressionQuality quality);
//可以将纹理显式压缩为指定的格式
//该知识点会配合之后的资源导入相关知识点使用
#endregion
#region 知识点二 查找对象依赖项
//object[] EditorUtility.CollectDependencies(Object[] roots);
//返回对象所依赖的所有资源列表
#endregion
#region 知识点三 更多内容
//官方文档:https://docs.unity3d.com/ScriptReference/EditorUtility.html
#endregion
}
}
MyEditorUtilityLearnWindow
using System.IO;
using UnityEditor;
using UnityEngine;
public class MyEditorUtilityLearnWindow : EditorWindow
{
[MenuItem("编辑器拓展教程/MyEditorUtilityLearnWindow")]
private static void OpenMyEditorUtilityLearnWindow()
{
MyEditorUtilityLearnWindow win = EditorWindow.GetWindow<MyEditorUtilityLearnWindow>("EditorUtility知识学习");
win.Show();
}
#region Lesson40_EditorUtility_编辑器默认窗口相关
private float value;
#endregion
#region Lesson42_EditorUtility_其他内容
private GameObject objTest1;
#endregion
private void OnGUI()
{
#region Lesson40_EditorUtility_编辑器默认窗口相关
if (GUILayout.Button("显示提示窗口"))
{
if (EditorUtility.DisplayDialog("测试窗口", "确定一定要做这件事情吗", "一定要做"))
{
Debug.Log("确定要做,在这里去处理逻辑");
}
else
{
Debug.Log("点击了叉叉,不去做");
}
Debug.Log("窗口显示完毕");
}
if (GUILayout.Button("显示三键提示窗口"))
{
int result = EditorUtility.DisplayDialogComplex("三键提示", "显示信息", "选项1", "关闭", "选项2");
switch (result)
{
case 0:
Debug.Log("选项1按下了");
break;
case 1:
Debug.Log("关闭键按下了");
break;
case 2:
Debug.Log("选项2按下了");
break;
default:
break;
}
Debug.Log("三键窗口显示完毕");
}
if (GUILayout.Button("显示更新进度条"))
{
//每次点击加进度条进度
value += 0.1f;
EditorUtility.DisplayProgressBar("进度条标题", "进度条窗口显示内容", value);
Debug.Log("进度条窗口显示完毕");
}
if (GUILayout.Button("关闭进度条"))
{
value = 0;
EditorUtility.ClearProgressBar();
}
#endregion
#region Lesson41_EditorUtility_文件面板相关
//1.显示文件存储面板
if (GUILayout.Button("打开文件存储面板"))
{
string str = EditorUtility.SaveFilePanel("保存我的文件", Application.dataPath, "Test", "txt");
//会得到带上文件名的存储路径,可以利用路径写入
Debug.Log(str);
if (str != "")
File.WriteAllText(str, "123123123123123");
}
//2.显示文件存储面板(默认为工程目录中)
if (GUILayout.Button("打开文件存储面板(仅限工程文件夹下)"))
{
string str2 = EditorUtility.SaveFilePanelInProject("保存项目内的文件", "Test2", "png", "自定义文件");
//只会从Asset开始拼接路径
Debug.Log(str2);
}
//3.显示文件夹存储面板
if (GUILayout.Button("显示文件夹存储面板"))
{
string str3 = EditorUtility.SaveFolderPanel("得到一个存储路径(文件夹)", Application.dataPath, "");
//显示带上文件夹的完整路径,点击取消返回空字符串
Debug.Log(str3);
}
//4.显示打开文件面板
if (GUILayout.Button("显示打开文件面板"))
{
string str4 = EditorUtility.OpenFilePanel("得到一个文件路径", Application.dataPath, "txt");
//会得到带上文件名的存储路径,可以利用路径读取资源
Debug.Log(str4);
if (str4 != "")
{
string txt = File.ReadAllText(str4);
Debug.Log(txt);
}
}
//5.显示打开文件夹面板
if (GUILayout.Button("显示打开文件夹面板"))
{
string str4 = EditorUtility.OpenFolderPanel("得到一个文件路径", Application.dataPath, "");
//显示带上文件夹的完整路径,点击取消返回空字符串
if (str4 != "")
{
Debug.Log(str4);
}
}
#endregion
#region Lesson42_EditorUtility_其他内容
objTest1 = EditorGUILayout.ObjectField("想要查找关联资源的对象", objTest1, typeof(GameObject), true) as GameObject;
if (GUILayout.Button("检索依赖资源"))
{
Object[] objs = EditorUtility.CollectDependencies(new Object[] { objTest1 });
//用Selection类选中所有依赖的资源
Selection.objects = objs;
}
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com