UG4L8-1——元件

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
GObject                        //元件类,是舞台上的最小组成单位
gObject.x //元件的x轴位置
gObject.y //元件的y轴位置
gObject.SetPosition() //设置元件的位置
gObject.SetSize() //设置元件的大小
gObject.width //元件的宽
gObject.height //元件的高
gObject.maxWidth //元件的最大宽
gObject.minWidth //元件的最小宽
gObject.scaleX //元件的x轴缩放比例
gObject.scaleY //元件的y轴缩放比例
gObject.scale //元件的缩放比例
gObject.SetPivot() //设置元件的轴心,同时可以设置是否让锚点和轴心位置一致
gObject.pivotAsAnchor //元件的锚点是否与轴心位置一致
gObject.visible //元件是否可见
gObject.touchable //元件是否可以交互
gObject.grayed //元件是否置灰
gObject.enabled //元件是否激活
gObject.rotation //元件的角度
gObject.displayObject //元件的原生对象,我们可以通过这个原生对象获取依附的GameObject对象
gObject.Dispose() //销毁元件
gObject.resourceURL //元件的资源地址
gObject.packageItem.name //元件的资源名
gObject.onStage //元件是否在场景上
gObject.data //元件的自定义数据

元件

元件是舞台上的最小组成单位

舞台中的组成元素我们称之为元件
基础元件:图片、图形、动画、装载器、文本、富文本、组、组件
组合型元件:标签、按钮、下拉框、滚动条、滑动条、进度条
特殊元件:列表

组件类 继承 元件类
元件类:GObject
组件类:GComponent

元件的属性

像图片,文本这些元件都有共同属性,这些共同的属性就是在元件的基类里实现的

  • 元件基础属性

    • 基本

      image

      • 名称:元件名称,之后可以通过代码根据这个名字获取元件
        可以重名,但是编辑器会提示你重名
        面板上的重要元件名称建议在该面板中保持唯一性

      • 原大小:勾选后,将使用素材的原始大小,当资源修改后,尺寸会随之修改

      • 缩放和尺寸的区别:

        • 尺寸改变九宫格起作用,缩放不会
        • 尺寸改变不会引起子对象大小变化,缩放会
      • 倾斜:可以做出类似伪3D的效果,
        图片、动画、装载器可以随意使用,不会有额外性能消耗;
        其它类型元件要谨慎使用

      • 轴心:决定旋转,尺寸,缩放的参考点

      • 同时作为锚点:锚点用于计算相对位置。
        默认锚点在左上角(0,0位置),如果勾选则锚点和轴心相同

      • 不可触摸:
        默认图片、普通文本、动画永远是不可触摸的,不会侦听事件。
        如果想他们可以侦听事件就转换为组件、富文本、装载器

    • 最大最小尺寸设置

      image

      • 尺寸右箭头:点击后可以设置尺寸限制
        在这里设置最大最小尺寸并不会影响这里的尺寸
        只会在与外部配合使用时,该参数才会起作用
    • 效果

      image

      • BlendMode混合模式和滤镜
        在Unity中,图片、动画、文字可以随意修改他们,
        其它组件谨慎使用,会有一定内存消耗。
        而且设置了特别BlendMode和修改了滤镜的对象会增加DC
    • 其它

      image

      • tooltips:文本提示(之后专门讲解,部分元件不会有这个属性)
      • 自定义数据:可以设置自定义数据,
        之后可以通过代码来获取这里的数据

元件类对象的使用

元件类GObject​,它是所有UI元素的基类

之前我们学习的组件类中很多内容都是继承自元件类的,
元件的界面属性都可以获取到,比如我们动态创建一个组件,然后获取组件上的元件

  1. 创建一个组件

    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);
  2. 获取组件中的元件

    1
    GObject obj = view.GetChild("btnSure");
  3. GObject​常用API

    • 坐标

      这里的坐标是相对于父元件的局部坐标,详见UG4L12——坐标系统

      1
      2
      3
      gObject.x = 20;
      gObject.y = 20;
      gObject.SetPosition(0, 0, 0);
    • 大小

      1
      2
      3
      gObject.SetSize(100, 100);
      gObject.width = 200;
      gObject.height = 100;
    • 大小限制

      1
      2
      gObject.maxWidth = 1000;
      gObject.minWidth = 100;
    • 缩放

      1
      2
      3
      gObject.scaleX = 1;
      gObject.scaleY = 1;
      gObject.scale = Vector2.one;
    • 轴心

      1
      2
      gObject.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;