求大神高手(自定义编辑器/交流求救贴)
unity3d吧
全部回复
仅看楼主
level 9
hjs19871126 楼主
自定义编辑器中我override了Skill脚本的OnInspectorGUI.
图一未修改前的显示.
同时我不想用base.OnInspectorGUI(),因为里面有很多的我不需要的成员变量.
大家通过第二章图片看到了我能自由选择技能类型.根据我选择的技能类型不同显示不同的成员变量.问题就随之而来了.我现在若要在Skill类中添加成员变量,还要在编辑器中添加修改.
有没有什么办法能让我编辑器自动获取类中的所有成员变量.然后自动过滤掉一些无用的?
(一)
(二)
当我用
System.Reflection.MemberInfo[] members = type.GetMembers((BindingFlags)(-1));
获取到MemberInfo的时候会获取到我的方法,我的托管,我的成员变量,还有一个C方法(类型为:System.Reflection.MonoCMethod).其实我只想获取到我自定义的成员变量就可以了...问题就在这里.
还有一个很关键的问题.我给绑定了这个脚本的物体赋值的问题.现在我只能用一个很笨的方法.就是用"target.成员名 = (成员类型)EditorGUILayout.ObjectField(....);",问题是还要强转.
就是这个强转难住了我,因为如果我要自动获取Skill中的成员.
哪位大婶给点建议或者思路?
2013年05月21日 05点05分 1
level 9
hjs19871126 楼主
千万不要沉!!!
2013年05月21日 06点05分 2
level 9
hjs19871126 楼主
顶起!!!不要沉底!
2013年05月21日 08点05分 3
level 9
hjs19871126 楼主
继续顶
2013年05月21日 10点05分 4
level 9
hjs19871126 楼主
好吧!没人回答么?
2013年05月22日 01点05分 5
level 13
Editor脚本没研究过~~ 帮不上呐~~
2013年05月22日 01点05分 6
[狂汗]
2013年05月22日 01点05分
level 9
hjs19871126 楼主
@mayaxiaoan
@岚依王子
@邪恶的PS
@曙光_unity3D
2013年05月22日 01点05分 7
level 9
hjs19871126 楼主
好吧!我自己找到了一个折中的办法.贴出来给同样困惑的人吧!
先获取成员:
MemberInfo[] memberInfo = target.GetType().GetMembers((BindingFlags)(-1));
序列化的对象:
SerializedObject ser_Obj = serializedObject;
序列化的成员:
SerializedProperty ser_Pro;
public override void OnInspectorGUI(){
ser_Obj.Update();
foreach(MemberInfo info in memberInfo){
ser_Pro = ser_Obj.FindProperty(info.Name);
if(ser_Pro != null){ //&& 其他判断条件(当前成员是否显示到检视面板上)
EditorGUILayout.PropertyField(ser_Pro,true);
}
}
ser_Obj.ApplyModifiedProperties();
}
2013年05月22日 02点05分 8
level 6
我在你第一张图片 ---->第2张图片的过程中卡主了 老是报错multi-object editing not supported
2014年09月27日 02点09分 9
level 6
搞定了 忘了要把脚本放editor文件夹下
2014年09月27日 03点09分 10
[汗]我都快忘了这个帖子了。。。你怎么扒出来的。。。
2014年09月28日 02点09分
回复 hjs19871126 :我在学这个 教教我啊
2014年10月04日 06点10分
level 7
你skill类继承什么了??
理论上编辑器上会显示又有public成员。
如果你想在编辑器隐藏他们请用[HideInInspector]声明
2014年09月28日 03点09分 11
你说的这些我都知道,我只是当时看到Inspector面板上面的变量太多了。
2014年09月28日 07点09分
看着难看而已。而且当时我没有用继承,造成了不同的技能使用的数据也不同。所以会有很多的用不到的变量出现在上面,让我这个强迫症看着难受。
2014年09月28日 07点09分
当时太懒了,而且项目也不大,所以就没考虑继承什么的然后就有了这个帖子。。。想根据不同的技能类型来显示各自需求的数据其他的都不显示出来。。。现在想起来真是给自己找麻烦。。。
2014年09月28日 07点09分
一次打字太多了超出部分,一阶一阶的给你盖。。。
2014年09月28日 07点09分
level 7
那你就只好弄个CustomEdtor类
然后自己写OnInspectorGUI()方法
2014年09月28日 07点09分 12
level 9
hjs19871126 楼主
确实让我傻傻的干出来了。。。当时我是这么明明变量名的 【变量名_技能类】 。。。我擦!赶紧的让这个帖子沉底了吧。。。。别让我丢人现眼了。。。
2014年09月28日 08点09分 13
1