电脑开机黑屏有鼠标-sqlserver2005
![textarea只读](/uploads/image/0190.jpg)
2023年4月3日发(作者:seo点击器)
Unity插件——Odin学习笔记(三)
andLayout
ists
ist
使⽤[TableList]以表的样式绘制List,具体的样式会根据具体元素的显⽰情况决定
intNumberOfItemsPerPage——每页元素的数量
boolIsReadOnly——是否只读
intDefaultMinColumnWidth——默认最⼩列宽
boolShowIndexLabels——是否显⽰Index值
boolDrawScrollView——是否绘制滚动条
intMinScrollViewHeight——滚动条显⽰的最⼩值
intMaxScrollViewHeight——滚动条显⽰的最⼤值
boolAlwaysExpanded——是否总是展开
boolHideToolbar——是否隐藏⼯具栏
intCellPadding——元素间隔
boolShowPaging——是否显⽰页数
intScrollViewHeight——滚动显⽰的⾼度
publicclassTableListExamples:MonoBehaviour
{
[TableList(ShowIndexLabels=true)]
publicList
}
[Serializable]
publicclassSomeCustomClass
{
[TableColumnWidth(57,Resizable=false)]
[PreviewField(Alignment=)]
publicTextureIcon;
[TextArea]
publicstringDescription;
[VerticalGroup("CombinedColumn"),LabelWidth(22)]
publicstringA,B,C;
[TableColumnWidth(60)]
[Button,VerticalGroup("Actions")]
publicvoidTest1(){}
[TableColumnWidth(60)]
[Button,VerticalGroup("Actions")]
publicvoidTest2(){}
}
olumnWidth
在[TableList]下使⽤[TableColumnWidth]可以调整该元素在TableList中的宽度
intWidth——宽度
boolResizable——是否可以调整⼤⼩
up
使⽤[TabGroup]可以通过TabBar切换所需的属性
stringTabName——TabGroup的名称,默认情况下为"_DefaultTabGroup"
boolUseFixedHeight——是否这个Tab与其他Tab保持⼀样的⾼度
boolPaddingless——如果为true,则每个页⾯的内容将不包含在任何框中
//这个TabA所在的分组是默认分组
[TabGroup("TabA")]
publicintOne;
//这个TabA所在的分组是NewGroup分组
[TabGroup("NewGroup","TabA")]
publicintA;
//上图中上⾯⼀个TabGroup为默认分组,下⾯⼀个为NewGroup分组
ntalGroups
tyGroupAttribute
stringGroupID——分组ID
stringGroupName——分组名称
intOrder——序号,指所在层
ntalGroup
继承⾃PropertyGroupAttribute,通过使⽤[HorizontalGroup]属性可以⽔平布局Inpspector⾯板的属性
floatWidth——宽度
floatMarginLeft——外左边距
floatMarginRight——外右边距
floatPaddingLeft——内左边距
floatPaddingRight——内右边距
floatMinWidth——最⼩宽度
floatMaxWidth——最⼤宽度
stringTitle——该标签上⽅出现的标题的⽂本
floatLabelWidth——指⽂本宽度
注意:这⾥的数值为0~1之间时,按百分⽐计算;为0时会⾃动调整;⼤于1时会取整按数值偏移
如果在⼀个Group中还需要嵌套的话,就要按照以下⽅式为Group取名
[HorizontalGroup("Split",0.5f,LabelWidth=20)]
[BoxGroup("Split/Left")]
publicintL;
[BoxGroup("Split/Right")]
publicintM;
[BoxGroup("Split/Left")]
publicintN;
[BoxGroup("Split/Right")]
publicintO;
alGroup
alGroup
继承⾃PropertyGroupAttribute,通过使⽤[VerticalGroup]属性可以垂直布局Inpspector⾯板的属性
floatPaddingTop——内上边距
floatPaddingBottom——内下边距
⽤法与HorizontalGroup类似,这⾥不过多赘述
tGroups
tGroup
继承⾃PropertyGroupAttribute,通过使⽤[FoldoutGroup]属性可以以下拉框形式布局Inpspector⾯板的属性
boolExpanded——是否⼀直展开
⽤法与HorizontalGroup类似,这⾥不过多赘述
up
up
继承⾃PropertyGroupAttribute,通过使⽤[BoxGroup]属性可以以Box形式布局Inpspector⾯板的属性
boolShowLabel——是否显⽰标签
boolCenterLabel——标签是否居中
⽤法与HorizontalGroup类似,这⾥不过多赘述
s
Group
继承⾃PropertyGroupAttribute,通过使⽤[ToggleGroup]属性可以以Toggle形式布局Inpspector⾯板的属性,类似[ShowIf],只有当
ToggleGroup为True时才显⽰
stringToggleGroupTitle——Toggle标签名
boolCollapseOthersOnExpand——是否打开之后关闭其他所有的
stringToggleMemberName——Toggle分组名
[ToggleGroup("EnableGroupOne","$GroupOneTitle")]
publicboolEnableGroupOne;
[ToggleGroup("EnableGroupOne")]
publicstringGroupOneTitle="One";
[ToggleGroup("EnableGroupOne")]
publicfloatGroupOneA;
[ToggleGroup("EnableGroupOne")]
publicfloatGroupOneB;
Property
Property
使⽤[InlineProperty]可以让内联属性以标签+属性的形式显⽰出来,⽽不是下拉框的形式
publicclassInlinePropertyExamples:MonoBehaviour
{
publicVector3IntVector3Int;
publicVector2IntVector2Int;
}
[Serializable]
[InlineProperty(LabelWidth=13)]
publicstructVector3Int
{
[HorizontalGroup]
publicintX;
[HorizontalGroup]
publicintY;
[HorizontalGroup]
publicintZ;
}
[Serializable]
publicstructVector2Int
{
[HorizontalGroup]
publicintX;
[HorizontalGroup]
publicintY;
}
roups
roup
类似[Title]的⽤法,这不过这次成为了⼀个组,详情请参考[Title]
inGroups
5.10.1.组嵌套组
本质上就是通过命名的⽅式来区分组
例如上图中的三个BoxGroup,他们同属于⼀个HorizontalGroup,那么就可以按照以下⽅式来命名
[HorizontalGroup("Split",width:0.4f,LabelWidth=20)]
[BoxGroup("Split/Left")]
[BoxGroup("Split/Center")]
[BoxGroup("Split/Right")]
如果我们西药在做左边的框再分左右只需要再命名即可
[HorizontalGroup("Split/Left/Split",width:0.4f,LabelWidth=20)]
[BoxGroup("Split/Left/Split/Left")]
[BoxGroup("Split/Left/Split/Right")]
只要分清所在的组并合理命名即可
s
s
对函数使⽤[Button]属性,就可以再Inspector⾯板上产⽣⼀个可以按的按钮
intButtonHeight——按钮⾼度
stringName——按钮的名称
ButtonStyleStyle——按钮类型
CompactBox——盒状,按钮在盒⼦外
FoldoutButton——参数以下拉框的形式展开
Box——盒状,按钮在盒⼦内
intbuttonSize——设置⼤⼩
boolExpanded——按钮在有参数的情况下是否展开
or
通过[GUIColor]可以设置GUI的颜⾊
Buttons
Button
使⽤[InlineButton]属性可以在⼀个属性后跟⼀个Button
stringMemberMethod——函数名
stringLabel——标签名
Groups
Group
对于使⽤[ButtonGroup]的⼀系列按钮会形成⼀个按钮组,默认按钮组的名称为“_DefaultGroup”,如果想要创建新的按钮组,那么就在
参数中填⼊组名即可
[Button()]
[ButtonGroup("MyButtonGroup")]
privatevoidE()
{
}
[GUIColor(0,1,0)]
[ButtonGroup("MyButtonGroup")]
privatevoidF()
{
}
sWithParameters
的参数
那么就如同上⾯所说的,如果Button是有参数的话,那么就会⾃动的暴露出来,这⾥也不多赘述
[Button]
privatevoidDefault(floata,floatb,GameObjectc)
{
}
siveButtonGroup
siveButtonGroupExample
使⽤[ResponsiveButtonGroup]就可以制作⾃适应的按钮组,同样是继承⾃[PropertyGroupAttribute]
stringgroup——默认分组为"_DefaultResponsiveButtonGroup"
ButtonSizesDefaultButtonSize——默认的Button⼤⼩
boolUniformLayout——如果为True那么每⼀排的Button的宽度都⼀致
就是⼀堆会⾃适应的按钮,就不做演⽰了
eContextMenu
eContextMenu
使⽤[DisableContextMenu]可以禁⽤右键操作
boolDisableForMember——禁⽤对其成员的右键
boolDisableForCollectionElements——禁⽤对数组的右键列表
ContextMenu
ContextMenu
使⽤[CustomContextMenu]可以⾃定义右键操作
stringMenuItem——选项名
stringMethodName——⽅法名
[CustomContextMenu("SayHello/Twice","SayHello")]
publicintMyProperty;
privatevoidSayHello()
{
("HelloTwice");
}
eChanged
eChanged
使⽤[OnValueChanged]可以在属性或字段的内容发⽣改变的时候调⽤所给的函数
stringMethodName——⽅法名
boolIncludeChildren——是否包括⼦类
//通过这个在选择Shader的同时下⾯只读属性的的Material也会随之改变
[OnValueChanged("CreateMaterial")]
publicShaderShader;
[ReadOnly,InlineEditor(review)]
publicMaterialMaterial;
privatevoidCreateMaterial()
{
if(al!=null)
{
DestroyImmediate(al);
}
if(!=null)
{
al=newMaterial();
}
}
thUnity
thUnity
如果你不想使⽤Odin绘制了,可以使⽤[DrawWithUnity]让属性使⽤Unity绘制
ributesOnClasses
8.1.1.对类作属性限制
如下使⽤⽅法
publicclassAttributesOnClassesExample:SerializedMonoBehaviour
{
publicMyClass
publicMyClass
publicMyClass
}
//下⾯这些都是我们之前看到过的
[Required]//如果为null会有提⽰
[LabelWidth(70)]//标签宽度为70
[Toggle("IsEnabled")]//isEnabled为True才会显⽰其余信息
[HideReferenceObjectPicker]//在选择后隐藏选择框,只能使⽤右键Settonull
publicclassMyClass
{
publicboolIsEnabled;
publicTFoo,Bar;
}
那么最后上⾯这个案例在Inspector的显⽰也和我们设想的⼀样
ValueDrawer
ValueDrawer
使⽤[CustomValueDrawer]可以⾃定义绘制⽅法,并且⽀持撤销操作和多个操作,参数为函数名,函数内使⽤IMGUI的⽅式来绘制
[CustomValueDrawer("MyStaticCustomDrawerStatic")]
publicfloatCustomDrawerStatic;
privatestaticfloatMyStaticCustomDrawerStatic(floatvalue,GUIContentlabel)
{
(label,value,0f,10f);
}
//感觉上不太实⽤
已做过介绍,略
yAsString
yAsString
之前也说过,是否已⽂字的形式绘制,通过Overflow参数调整,如果为false就会⾃动换⾏
x
已做过介绍,略
tyTooltip
已做过介绍,略
ext
ext
使⽤[LabelText]可以修改标签的⽂本,使⽤$符号可以动态修改⽂本
[LabelText("3")]
publicintMyInt3;
[InfoBox("Use$torefertoamemberstring.")]
[LabelText("$MyInt3")]
publicstringLabelText="Dynamiclabeltext";
LabelExamples
Label
使⽤[SuffixLabel]属性可以在属性后作⼀个后缀,这在解释属性的时候⾮常有⽤
stringLabel——标签名,使⽤$符号可以动态修改⽂本
boolOverlay——是否覆盖,如果使⽤了覆盖,后缀就会覆盖在属性上⽽不是写在后⾯
[SuffixLabel("$Suffix",Overlay=true)]
publicstringSuffix="Dynamicsuffixlabel";
bel
bel
通过使⽤[HideLabel]可以隐藏属性的标签名
ectorGUI
ectorGUI
使⽤[OnInspectorGUI]也可以⾃定义绘制GUI,绘制⽅法还是IMGUI,可以通过对函数添加属性,也可以通过在参数中添加函数名来绘制
or
or
通过[GUIColor]可以设置GUI的颜⾊,可以通过设置rgba、设置Color以及函数返回Color来设置颜⾊,⽐较简单
通过[Indent]可以进⾏缩进,参数为缩进⼤⼩(正负都可以,int类型),也很简单
tyOrder
tyOrder
通过[PropertyOrder]可以改变属性的排布顺序,默认的排布顺序是根据代码从上往下,使⽤了PropertyOrder就会根据PropertyOrder
排序,默认为0(即没有标注的也为0),同等数值也是从上往下
opertiesInTheInspector
Inspector/ShowInInspector
[HideInInspector]可以让已经被序列化的属性不在Inspector⾯板中出现
[ShowInInspector]可以让即使没有被序列化的属性也在Inspector⾯板中出现
之前也说过,略
aticMembersInTheInspector
8.15.1.显⽰静态成员
使⽤[ShowInInspector]可以让静态的成员也显⽰出来,⽽静态函数不需要标签也能显⽰
awerChain
awerChain
使⽤[ShowDrawerChain]可以显⽰绘制顺序,⽤来Debug
那么到这⾥为⽌AttributesOverview案例的内容已经完全解释完毕,已经对⼤部分基本的标签有了基本的了解,接下来就是发挥⾃⼰的想
象⼒来对⾃⼰的项⽬进⾏处理了!
更多推荐
textarea只读
发布评论