扩展 Unity的 TextureImporterEditor

这个Unity在定制的时候就遇到问题, 最好(不是必须的, 可以自己实现啊)反射系统的,下面有些代码是之前  的文章中介绍过的。  比如 scene 场景文件的 Inspector 面板显示。   文件夹的 Inspector面板显示等!!! 正常的逻辑做法; [CustomEditor(typeof(TextureImporter
摘要由CSDN通过智能技术生成

孙广东  2016.8.31


            这个Unity在定制的时候就遇到问题, 最好(不是必须的, 可以自己实现啊)反射系统的,


下面有些代码是之前  的文章中介绍过的。  比如 scene 场景文件的 Inspector 面板显示。   文件夹的 Inspector面板显示等!!!

    正常的逻辑做法;
    [CustomEditor(typeof(TextureImporter))]
    public class CustomTextureAssetInspector : Editor
    {
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();      // 首先我希望显示默认的 系统的内容(但是不是我想要的!)
            string path = AssetDatabase.GetAssetPath(target);
            // 1
            GUI.enabled = true;
            if (path.EndsWith(".png") || path.EndsWith(".jpg"))
            {
                if (GUILayout.Button("Setup2UI"))
                {

                }
                if (GUILayout.Button("Setup2SpineTexture"))
                {

                }
            }
            Debug.Log("=============显示 TextureAssetInspector ======");
        }
    }

结果如下图所示,  这种肯定不是我想要的。 


http://blog.csdn.net/u010019717



所以只能使用反射解决:

using UnityEngine;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using System.Reflection;
using System;

/// <summary>
/// 描述:注: 音频、贴图、材质、预制体、模型、脚本、特殊不识别的资源等都不是 DefaultAsset
/// author: 孙广东
/// </summary>
[CustomEditor(typeof(UnityEditor.DefaultAsset))]
public class CustomDefaultAssetInspector : Editor
{
    #region ===字段===

    private static string prePath = string.Empty;

    #endregion

    #region ===Unity事件=== 快捷键: Ctrl + Shift + M /Ctrl + Shift + Q  实现

    // 1、如果是场景就显示  场景的所有引用。
    // 2、如果是文件夹,就显示 文件夹下的所有文件和子目录
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        string path = AssetDatabase.GetAssetPath(target);

        // 1
        GUI.enabled = true;
        FileInfo fil = new FileInfo(path);
        if (fil.Attributes == FileAttributes.Directory)//判断类型是选择的是文件夹还是文件
        {
            GUILayout.Label("文件夹下的所有内容:");
            var filePaths = Directory.GetFiles(path, "*", SearchOption.AllDirectories);
            int i = 1;
            f
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity Editor扩展是指通过编写代码来扩展Unity编辑器的功能。通过创建自定义的编辑器窗口、工具栏按钮、菜单项和面板等,开发者可以为自己的项目添加一些定制化功能,以提高开发效率和用户体验。 Unity提供了一套API来实现编辑器扩展,开发者可以利用这些API去创建自定义的编辑器界面。首先,我们需要创建一个继承自EditorWindow或Editor类的脚本,然后在这个脚本中实现我们想要的功能。比如,我们可以在自定义的编辑器窗口中创建一些GUI元素,如按钮、文本框、下拉菜单等,用于控制场景中的对象、调整参数或执行特定的操作。 另外,Unity还提供了一些常用的工具类,如SerializedObject、SerializedProperty等,以便开发者可以访问和修改Unity对象的属性。使用这些工具类,我们可以在编辑器扩展中实现对象的序列化、反序列化和检查等功能。 在开发过程中,Unity的编辑器扩展还可以与自定义的脚本进行交互。通过注册自定义的菜单项、工具栏按钮或快捷键,我们可以在编辑器中快速调用脚本的功能,并在自定义界面中显示脚本的运行结果。 总结来说,Unity Editor扩展是一种强大的工具,它可以帮助开发者提高开发效率和用户体验。通过编写代码,我们可以创建出各种各样的自定义编辑器界面,以满足不同项目的需求。无论是增加交互性、优化工作流程还是增加特定的功能,Unity的编辑器扩展都能提供灵活和强大的解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值