UG4L8-1——元件
UG4L8-1——元件
本章代码关键字
1 | GObject //元件类,是舞台上的最小组成单位 |
元件
元件是舞台上的最小组成单位
舞台中的组成元素我们称之为元件
基础元件:图片、图形、动画、装载器、文本、富文本、组、组件
组合型元件:标签、按钮、下拉框、滚动条、滑动条、进度条
特殊元件:列表
组件类 继承 元件类
元件类:GObject
组件类:GComponent
元件的属性
像图片,文本这些元件都有共同属性,这些共同的属性就是在元件的基类里实现的
-
元件基础属性
-
基本
-
名称:元件名称,之后可以通过代码根据这个名字获取元件
可以重名,但是编辑器会提示你重名
面板上的重要元件名称建议在该面板中保持唯一性 -
原大小:勾选后,将使用素材的原始大小,当资源修改后,尺寸会随之修改
-
缩放和尺寸的区别:
- 尺寸改变九宫格起作用,缩放不会
- 尺寸改变不会引起子对象大小变化,缩放会
-
倾斜:可以做出类似伪3D的效果,
图片、动画、装载器可以随意使用,不会有额外性能消耗;
其它类型元件要谨慎使用 -
轴心:决定旋转,尺寸,缩放的参考点
-
同时作为锚点:锚点用于计算相对位置。
默认锚点在左上角(0,0位置),如果勾选则锚点和轴心相同 -
不可触摸:
默认图片、普通文本、动画永远是不可触摸的,不会侦听事件。
如果想他们可以侦听事件就转换为组件、富文本、装载器
-
-
最大最小尺寸设置
- 尺寸右箭头:点击后可以设置尺寸限制
在这里设置最大最小尺寸并不会影响这里的尺寸
只会在与外部配合使用时,该参数才会起作用
- 尺寸右箭头:点击后可以设置尺寸限制
-
效果
- BlendMode混合模式和滤镜
在Unity中,图片、动画、文字可以随意修改他们,
其它组件谨慎使用,会有一定内存消耗。
而且设置了特别BlendMode和修改了滤镜的对象会增加DC
- BlendMode混合模式和滤镜
-
其它
- tooltips:文本提示(之后专门讲解,部分元件不会有这个属性)
- 自定义数据:可以设置自定义数据,
之后可以通过代码来获取这里的数据
-
元件类对象的使用
元件类GObject
,它是所有UI元素的基类
之前我们学习的组件类中很多内容都是继承自元件类的,
元件的界面属性都可以获取到,比如我们动态创建一个组件,然后获取组件上的元件
-
创建一个组件
1
2
3
4
5
6
7
8
9
10//设置适配相关
GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);
//包与依赖包的加载
UIPackage package = UIPackage.AddPackage("UI/teach");
foreach (var item in package.dependencies)
{
UIPackage.AddPackage(item["name"]);
}
GComponent view = UIPackage.CreateObject("Teach", "TeachPanel").asCom;
GRoot.inst.AddChild(view); -
获取组件中的元件
1
GObject obj = view.GetChild("btnSure");
-
GObject
常用API-
坐标
这里的坐标是相对于父元件的局部坐标,详见UG4L12——坐标系统
1
2
3gObject.x = 20;
gObject.y = 20;
gObject.SetPosition(0, 0, 0); -
大小
1
2
3gObject.SetSize(100, 100);
gObject.width = 200;
gObject.height = 100; -
大小限制
1
2gObject.maxWidth = 1000;
gObject.minWidth = 100; -
缩放
1
2
3gObject.scaleX = 1;
gObject.scaleY = 1;
gObject.scale = Vector2.one; -
轴心
1
2gObject.SetPivot(0, 0, true);
gObject.pivotAsAnchor = false; -
是否可见
1
gObject.visible = true;
-
是否交互(点击)
1
gObject.touchable = false;
-
置灰
1
gObject.grayed = true;
-
激活(变灰 + 是否交互)
1
gObject.enabled = false;
-
旋转
1
gObject.rotation = 0;
-
原生对象,即真正依附到
GameObject
对象上的脚本只有通过这个属性,我们才能获取到该元件所依附在的
gameObject
1
GameObject obj = gObject.displayObject.gameObject;
-
销毁
1
gObject.Dispose();
-
使用的资源地址(不是所有的元件都有)
1
print(gObject.resourceURL);
-
使用的资源名
1
print(gObject.packageItem.name);
-
是否在场景上显示
1
print(gObject.onStage);
-
自定义数据
1
gObject.data;
-