UnityEditor 如何在inspector面板上显示另一个inspector

我希望用PropertyAttribute标记来使 一个类里引用的一个组件 或者一个ScriptableObject能在这个组件的inspector中显示 可以方便修改 不知要怎么实现 下面是尝试的一个方案 但是结果并不理想
效果:未引用对象:
图片说明
将引用的对象:
图片说明
引用对象后:
图片说明

public class ShowObject: PropertyAttribute { }


namespace UnityEditor
{
    [CustomPropertyDrawer(typeof(ShowObject))]
    public class ShowObjectDraw : PropertyDrawer
    {
        //画嵌入的Inspector的Editor
        Editor objectEditor;
                //要画的对象
        UnityEngine.Object target;
        //展开
                bool open;
        //PropertyDrawer的高度
                float height;
                //动态锚点
        Rect ancot;
        public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
        {
            return height + 5;
        }
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
                //初始化锚点
            ancot =new Rect(position);
                        //初始化高度
            height = 17;
            ancot.height = 17;
                        //如果目标对象存在则画展开框
            if (target != null)
            {
                open = EditorGUI.InspectorTitlebar(ancot, open, target, true);
                ancot.yMin += 20;
                ancot.height += 17;
                height += 20;
            }
                        //属性基本赋值框绘制
            EditorGUI.ObjectField(ancot, property, label);   
                        //目标获取
            target = property.objectReferenceValue;
                        //是否展开
            if (open )
            {
                objectEditor = Editor.CreateEditor(target);
                                //绘制对象的Inspector——不知道为什么它绘制在 载体组件的后面 导致会挡住 载体组件后面的组件显示
                objectEditor.OnInspectorGUI();
            }
            else {
                objectEditor = null;
            }
        }
    }
}



组件对象:

 public class Team_TypeLogicFSM 
    {
        [ShowObject]
        public Type_AIData con;
                }

有没有知道怎么实现的大佬给个点子 或者EditorGUI中是否有我没发现的方法可以使用的?

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
unity如何将自己定义的事件显示在Inspector面板
第一步:如何显示在面板上nn1.创建一个C#脚本并修改脚本名称 友情提示:脚本名称要具备一定的含义nnnpublic class DefineEvent : MonoBehaviourn{n n}nn2.定义事件原型nnnpublic class DefineEvent : MonoBehaviourn{n n}n//以下是事件原型的定义n[Serializable]npublic c...
Unity(八)Editor01自定义Inspector面板GUI参数,EasyButton为例
一:首先看一下EasyButton在Inspector面板暴露的参数信息这些都是UnityEditor的功能那么,如何自己来定义这些GUI呢?看下面二:所需脚本,2个打开EasyButton脚本后,shift+F12查找引用发现有个GUIEasyButtonInspector脚本在引用,这个脚本显然在Editor目录里没错,CustomEditor分配了一个EasyButton,那么这里所写的Ed...
unity自定义特性在inspector面板上显示或者隐藏字段
使用自定义特性在unity的inspector面板上显示或者隐藏字段
Unity Inspector面板上显示中文
在Unity上显示中文,可以这样搞,直接上代码rn/*--------------------------------------------------------------------rn * Author Name: DXLrn * Creation Time: 2018.10.11rn * File Describe: Inspector面板上高级显示,例如显示中文rn * ---------...
Unity3D中在Inspector面板中显示复合属性信息(类属性/Struct属性)
在Unity3D开发过程中,我们可能会需要在Inspector中显示某些较复杂的数据类型
Unity自定义委托方法 通过Inspector面板拖拽方法调用
最近一直想要自己写一个Button类,发现Unity中Button的OnClick事件可以在属性面板拖拽方法,然而我自己定义的UnityAction和delegate无法显示在Inspector面板。nn经过研究发现,应该使用UnityEvent类nnnn这样子就可以在Inspector面板拖拽方法了nnnnInvoke方法执行事件。nn以上。...
Unity 检视面板显示数据(Inspector)
using System.Collections;    using System.Collections.Generic;    using UnityEngine;    using UnityEngine.Serialization;         [AddComponentMenu("Sample/TestCode")]  //Component上会增加一个Sample/TestCode...
将类对象显示在Unity的Inspector面板上
n n n 转载:http://blog.csdn.net/liqiangeastsun/article/details/42101989nUnity中默认只在Inspecotr面板上显示基本类型数据, 如 int, float, string, Rect等基本类型。n经常会用到一些类,希望显示在Inspecotr面板上.n需要在定义类前写写一行代码 [System....
Unity 枚举值在Inspector面板显示中文
Unity 枚举值在Inspector面板显示中文n一般给策划写编辑器时便于策划查看选择类型,将枚举值显示为中文,如下所示nn代码如下nusing UnityEngine;nusing System;nn#if UNITY_EDITORnusing UnityEditor;nusing System.Reflection;nusing System.Text.RegularExpressions;...
Unity拓展Inspector面板之添加自定义Button
Unity拓展Inspector面板之添加自定义Button
unity3d学习日记:使用[System.Serializable]在inspector面板内显示自定义数据类型类实例对象的内部数据
在unity里,自定义数据类型无法显示在inspectior面板里,需要对定义数据类型的类或者结构体使用[System.Serializable]。效果如图:rnrnrnusing System.Collections;nusing System.Collections.Generic;nusing UnityEngine;nnpublic class Test : MonoBehaviour {
Unity自定义Inspector窗口——根据枚举类型显示指定内容
本文参考了这篇文章nnn我们直接进入主题,假设我们现在有下面这样一个类:nnnnpublic class Testn{n public enum Typen { n Enemy,n Playern }nn public Type type;nn public float enemyHP;n public float playerHP;
unity私有变量在Inspector面板显示公有变量不显示
unity3d学习笔记rn[HideInInspector]rn可以使一个公有的变量在Inspector面板中隐藏起来rn[SerializeField]rn可以使一个私有的变量在Inspector面板中显示出来rnrn
unity自定义inspector面板(选择不同枚举类型,inspector面板出现不同信息)
废话不多说,先上效果图: n,简单的来说也就是代码枚举几种类型,我选择A,就出现A的相关数据,选择B就出现B的相关数据,如果不做这种效果,inspector面板就会有很多东西,太乱。好了,下面开始教如何制作这个种效果的: n先新建一个C#脚本,脚本名称随便你,我这里用test1.cs,相关内容如下:using UnityEngine;nusing System.Collections;public
扩展自定义类在Inspector面板的显示/在Inspector面板显示自定义类方法
一、nn简单一点的方法,给类方法添加 [ContextMenu("")] 标记,添加完成后,在Inspector面板的该脚本组件下,右键弹出菜单,可在编辑器环境调用该方法nnnnnpublic class InspectorEditorTest : MonoBehaviourn{n [SerializeField] string outPutStr;nn //在Inspector面板的...
Unity 如何自定义一个组件 让其可以在面板Inspector被创造(1)
灰常简单!只需三步!nnFirstly 创建一个c#文件(我这里取名为ScriptableUtility2)nn内容为nnnusing UnityEngine;nusing UnityEditor;nnpublic static class ScriptableUtility2n{n //为创建自定义类型n public static void CreateAsset<T>...
Unity3D 监控面板显示数据(Inspector)
监控面板显示共有和私有数值进行调整
使用自定义Editor类在Unity下扩展Inspector窗口(通用)
Unity的Inspector窗口可以实时展示我们的脚本组件上的变量内容,但是内容比较简陋,很多时候为了显示更多内容或更好的排版,必须手写脚本组件的Editor类以实现目的。nn但是有些基础需求,我希望能默认提供给所有脚本组件使用,而无需为其定制Editor类。后来发现有个插件叫做Odin,它能让任意继承自Monobehaviour的脚本都可以实现其提供的Inspector扩展功能(它把所有脚本都...
Unity3D中Inspector视图中显示属性Get/Set数值
https://github.com/LMNRY/SetPropertynn
如何在Inspector里显示数组
如何在Inspector里显示数组nn将includeChildren参数设置为true就可以显示数组了nnEditorGUILayout.PropertyField(controllerrenderer,true);nn nhttps://docs.unity3d.com/ScriptReference/EditorGUILayout.PropertyField.html...
Unity编辑器之inspector处理
using UnityEngine;nusing System.Collections;nusing UnityEditor;nn[CustomEditor(typeof(MaterialsChangeContainer))] //需要编辑的脚本控件npublic class MaterialsChangeContainerEditor : Editor n{n private static
Unity 脚本 —— 在 Inspector 上显示不一样的 Component
本文章将会根据自己在探索 Unity 的过程中,把学习到的
Unity根据条件控制Inspector面板中的属性显示
很多情况下,一个组件可调整的属性比较多,但是属性之间又有一定的联系,最简单的,当属性type是类型typeA时,属性width和height才会起作用。n这时候,为了界面的整洁和直观,如果type的属性不是typeA,那我们就没必要暴露出width和height属性。
Unity Editor 编辑器扩展 十一 Inspector可排序列表
目录可排序列表简单使用可排序列表简单使用创建如下脚本并挂载到物体上:using UnityEngine;nusing System.Collections;public class Example1 : MonoBehaviour { [SerializeField]n string[] texts;}在Editor中创建如下脚本:nusing UnityEngine;nusing Un
修改Inspector面板序列化数组时元素的显示名称(Element)
记录一个有趣的问题,如图~nnnnn[System.Serializable]npublic class Itemn{n //只能是string类型 且必须是第一个属性n //才能修改Inspector面板序列化数组时元素的显示名称(原名称为Element)n public string name;n public int id;n}nnnpublic class Test...
使用枚举或多个bool控制变量是否显示在Inspector面板
写了一个公共的工具脚本可能设置了好多变量,但是实际使用时可能只使用了一部分,有好多变量都是空的(实际不需要设置),看着是不是很奇怪 那我们就想办法把不需要的变量隐藏起来 测试demo写了使用枚举或者bool值控制,控制的变量多的话建议使用枚举
Unity-Editor 编辑Inspector面板数据保存问题
Unity-Editor 编辑Inspector面板数据保存问题使用Editor 编辑脚本,在Inspector显示自定义UI如下 n代码如下 Car.csusing UnityEngine;nusing System.Collections;public class Car : MonoBehaviour { public int wheelCount = 0; // Use this
Unity Inspector的简单绘制
用到的脚本暂时命名为Test[CustomEditor(typeof(Test))]重写OnInspectorGUI()函数public class MyInspector : Editor//继承Editorn{n public override void OnInspectorGUI()//重写OnInspectorGUI()n {n //开始横向布局
在unity脚本中控制Inspector面板的参数
在编写脚本的过程中我们会遇到一些小问题rn比如一个的变量 为了在其他脚本中可以调用 我们需要写成public类型的rn这样的话在Inspector面板中会出现此变量 这篇博客会给大家介绍一些方法去避免这些小问题rn1.[Header(" ")]rn这个的作用是给它下面的所有变量一个总标题rn2.[Tooltip("")]rn这个的作用是给下面的第一行(紧邻的语句)注释rn这个注释和双斜杠的注释不同rn这个注释的...
一键展开关闭unity的 Inspector面板上的所有组件
孙广东  2015.12.11using UnityEngine;nusing System.Collections.Generic;nusing System.Collections;nusing UnityEditor;nusing System.Reflection;nusing System;nn /// n /// 描述:全部 展开/收起 Inspector面板的所有组件、
Unity学习笔记[1]——属性面板(inspector)访问{get,set}形式的属性
控制Unity Inspector(属性面板)以{get,set}访问属性值的方法——SetPropertyn解决方法nn着急的孩子请看过来nSetProperty 源库,一键下载到unity项目中即可使用。nhttps://github.com/LMNRY/SetPropertynn关于一件遗憾的事情……n笔者在使用UnityEditor编辑器过程中,遇到了一件非常遗憾的事情。n在一个MonoB...
Unity3d中如何让子类继承父类的Inspector显示效果
有时候为了让脚本在监视面板的显示更加简洁美观,我们会使用CustomEditor来定制化Inspector。n只需要将CustomEditor的第二个参数设置为true,子类就可以继承我们为父类定制的Inspector了。n如下图所示:
在属性上面添加这个注释 在unity界面能看到注释内容
[Tooltip("攻击力")]
Unity 在Inspector 中做出Shader里面的Select图片样式
就是在自定义Inspector面板中做出的样式。参考文章:http://www.xuanyusong.com/archives/2202先建一个Icon  C#脚本using System.Collections;using System.Collections.Generic;using UnityEngine;public class Icon : MonoBehaviour{    publ...
Unity序列化编辑器使用
该代码为Unity Editor 使用序列化保存数据,将数据显示在Inspector 面板上的操作
unity Inspector属性面板 组件启用与关闭
n n n https://docs.unity3d.com/ScriptReference/GameObject-activeSelf.htmlnhttps://docs.unity3d.com/ScriptReference/GameObject.SetActive.htmlnusing System.Collections;nusing System.Colle...
Unity Editor编辑器实用扩展
1.编辑器实用方法汇总nnn//1.编辑器内物体查找(指定路径下搜索类型是scene/object.. ,并且名字中包含unity的文件)nvar mlist = new List<string>(AssetDatabase.FindAssets("unity t:scene", new string[] { "Assets/path" }));n//2. 定位nEditorGUIUt...
Unity菜单编程-自定义的图片Inspector面板
本类以.png图片的inspector面板为例,实现一个图片自定义的Inspector面板,Inspector面板可以直接针对当前选中对象做一个操作。下面的mytestInspector类是用于将当前选中的.png图片自动转为Sprite类型,但是我有一点不太清楚TextureImporter类在修改textureType的时候,如果没有跟着指定textureFormat图片格式的,就会出现白图片。
「Unity3D」(1)自定义Inspector绘制默认Script
这是一个关于强迫症的故事。Unity中如果没有自定义脚本的Inspector,就会默认绘制出一个,不可编辑的脚本对应选取框。这有什么好处呢 ?鼠标点击的时候,能够在Project试图里定位脚本所在的文件夹和位置。当然如果没有,也可以鼠标右键进行Editor Script。如果我们override了OnInspectorGUI函数,除非调用base.OnInspectorGUI父类的方法,否则是不会绘
Unity 编辑器扩展总结 四:自定义Inspector面板
编辑器扩展总结rnrn工欲善其事必先利其器rnrn引言: 在项目开发中,编辑器扩展为开发者提供了开发自定义工具的功能,让开发者更加便利地使用编辑器开发项目。近期小生一直在学习编辑器扩展的知识,发现网络上关于编辑器知识点的博客较为零散且混乱。所以决定近期会整理一系列编辑器相关的博客,分享给每一位在学习道路上奋斗的童鞋。如若博客中存在错误,还请大佬们不吝赐教。所有参考的博客或者视频来源将在文末展示。rn开发版本...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何在网页制作中加入视频 如何在网页制作中插入视频