电脑开机黑屏有鼠标-sqlserver2005

textarea只读
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)]

publicListTableListWithIndexLabels=newList();

}

[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

{

publicMyClassA;

publicMyClassB;

publicMyClassC;

}

//下⾯这些都是我们之前看到过的

[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只读