位置: 编程技术 - 正文
推荐整理分享行为怪异的Unity编辑器类 EditorGUILayout(行为怪异的人有问题吗),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:行为怪异的人,行为怪异的人聪明吗,行为怪异的成语,行为怪异的人聪明吗,行为怪异的人,行为怪异的成语,行为怪异的人有问题吗,行为怪异的成语,内容如对您有帮助,希望把文章链接给更多的朋友!
EditorGUILayout 是Unity3D 中用于描绘Inspector类型的编辑器界面的类。提供了一组十分方便实用的方法。
但不知道为什么,Unity却没有把它做好,让他的行为十分怪异。
我们可以做以下实验
建立一个Vector2类型的属性,通过EditorGUILayout.PropertyField来描画
[csharp] view plaincopyprint?EditorGUILayout.PropertyField(Offset); 结果我们得到了一个可以折叠的箭头,但却打不开,它没有包含子节点。可以看出,Unity中把Vector2的两个变量x、y当作了子节点处理。
那么
[csharp] view plaincopyprint?EditorGUILayout.PropertyField(Offset,true); 这样我们就描画了它的子节点我们再来看看Vector3
[csharp] view plaincopyprint?EditorGUILayout.PropertyField(Vector2Text); 结果如下,可以看出vector的排版很好,这个才是我们需要的。经过试验,发现,无论是否指定显示子节点,其式都是一样的。如果我们想要一个vector2怎么办可以通过EditorGUILayout.Vector2Field方法实现
[csharp] view plaincopyprint?Offset.vector2Value = EditorGUILayout.Vector2Field("Pixel Offset", Offset.vector2Value, MarginTypeWidth);我们再做稍稍复杂的尝试
假设我们需要描画一组水平组合的UI,先试试Vector3
[html] view plaincopyprint?EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(Vector2Text, GUIContent.none,MarginTypeWidth); EditorGUILayout.PropertyField(MarginType, GUIContent.none, LabelWidth); EditorGUILayout.EndHorizontal(); 我们得到了想要的样式,一个Vector3和一个枚举的单选List再试试Vector2
[csharp] view plaincopyprint?EditorGUILayout.BeginHorizontal(); Offset.vector2Value = EditorGUILayout.Vector2Field("Pixel Offset", Offset.vector2Value); EditorGUILayout.PropertyField(MarginType, GUIContent.none, LabelWidth); EditorGUILayout.EndHorizontal(); 结果却是这个样子,因为使用EditorGUILayout.Vector2Field不能使用GUIContent.none来定义空标签,结果就杯具了。而且我暂时没找到解决办法。最后来试试Vector4是什么样子的
[csharp] view plaincopyprint?EditorGUILayout.PropertyField(Vector4Text,true);很不幸,和Vector2一样。搞不懂这是为啥。
本来只是想做一个用来定义UI控件相对屏幕定位坐标的UI,结果最后只能做成
介个样子。
还有一个很郁闷的
这是一个关于Size的定义框。
其实放在一个行内即可。问题是一个行内的式却是
代码如下
[csharp] view plaincopyprint?EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(Size.FindPropertyRelative("Width")); EditorGUILayout.PropertyField(Size.FindPropertyRelative("Height")); EditorGUILayout.EndHorizontal();尝试添加宽度定义
[html] view plaincopyprint?private static GUILayoutOption SizeWidth = GUILayout.MaxWidth(f); …… EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(Size.FindPropertyRelative("Width"), SizeWidth); EditorGUILayout.PropertyField(Size.FindPropertyRelative("Height"), SizeWidth); EditorGUILayout.EndHorizontal(); 结果彻底乱了。
很郁闷的发现,前面的标签,宽度不能完美的随着控件整体的宽度定义变化而变化。虽然可以隐藏前面的标签自己添加,但数类型的编辑框,其标签带有拖拽功能,这个是自己添加的标签没有的,所以只能郁闷使用两行的样子了。
以上这些,虽然和技术本身无关,但用户体验上,同类的数据或者行为,其表现应该一致或接近。Unity显然没有做到,而且对于一些常见的情况,Unity甚至没有做出很好的考虑,直接排版出错了。很显然,Uinty还有很多细节需要完善。
OculusDK2配置及在Unity中的使用(OVRManager.cs导入报错解决) 原因:在我做的一个项目中,想使用著名的Oculus来个视觉冲击,感觉很是霸气遇到的问题:1:OculusDK2版本问题及支持的平台以下是目前最新包部分:官
Unity5调用Android第三方sdk报错 错误1:CommandInvokationFailure:Failedtore-packageresources.SeetheConsolefordetails.D:adt-bundle-windows-x_-sdkbuild-toolsandroid-4.4Waapt.exepackage--auto-add-overlay-v-f-m-Jgen-M
【猫猫的Unity Shader之旅】之可编程 Shader初步 可编程Shader,通常也被叫做VertexFragmentShader,是比SurfaceShader更灵活的一种UnityShader形态。使用可编程Shader,可以实现对最终效果的更精确的控制,然而,
标签: 行为怪异的人有问题吗
本文链接地址:https://www.jiuchutong.com/biancheng/375673.html 转载请保留说明!上一篇:NGUI的depth和Z轴的关系
友情链接: 武汉网站建设