Unity 基础 之 代码动态监听UI交互组件(二)

852 阅读4分钟

这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

今天继续介绍剩下的三个UI交互组件的动态监听,没有看过 代码动态监听UI交互组件(一)的同学可以看下学习一下哈,虽然他们之间都是独立的,但是学过了会有助于理解哦。

一,Scrollbar组件

滚动条组件:允许用户滚动由于太大而无法完全看到的图像或其他视图。

1.1 组件介绍

属性

  • Interactable:此组件是否接受输入
  • Transition:确定控件以何种方式对用户操作进行可视化响应的属性。1
  • Navigation:确定控件顺序的属性。1
  • Fill Rect:用于控件背景区域的图形。
  • Handle Rect:用于控件滑动“控制柄”部分的图形
  • Direction:拖动控制柄时滚动条值增加的方向。选项包括 Left To Right、Right To Left、Bottom To Top 和 Top To Bottom。
  • Value:滚动条的初始位置值,范围为 0.0 到 1.0。
  • Size:控制柄在滚动条内的比例大小,范围为 0.0 到 1.0。
  • Number Of Steps:滚动条允许的不同滚动位置的数量。(当前值小于1时, 滑块可以滑动到任意位置; 当大于1时则是已占比形式, 比如:numberOfSteps = 3, 则滑块每次移动1/3;)

1.2 代码监听

默认监听方式:会自动传递Scrollbar的Value作为属性。

拓展监听方式:使用Lambda表达式的方式进多参数传递

public Scrollbar m_Scrollbar;

void Start()
{
    // 监听 --> 会自动将value作为参数传递
    m_Scrollbar.onValueChanged.AddListener(OnValueChanged_Scrollbar);
    
    // 或者 --> 还有其他参数可以这样写
    m_Scrollbar.onValueChanged.AddListener((float v) => { OnValueChanged_Scrollbar(v, m_Scrollbar.gameObject); });
}

void OnValueChanged_Scrollbar(float value)
{
    Debug.Log("滚动条值改变响应方法, 当前Slider的值:" + value);
}
void OnValueChanged_Scrollbar(float value, GameObject go)
{
    Debug.Log("滚动条值改变响应方法, 当前Slider名称和值分别:" + go.name + value);
}

看过上篇的童鞋理解起来应该会很方便,因为它的默认监听方式和Slider组件是完全一样的,而拓展的监听方式又在Button组件讲解时介绍过。


二,DropDown组件

下拉选单组件:可用于让用户从选项列表中选择单个选项。

2.1 组件介绍

属性

  • Interactable:此组件是否接受输入
  • Transition:确定控件以何种方式对用户操作进行可视化响应的属性。
  • Navigation:确定控件顺序的属性。。
  • Template:下拉列表的模板的矩形变换。
  • Caption Text:用于保存当前所选选项的文本的文本 (Text) 组件。
  • Caption Image:用于保存当前所选选项的图像的图像 (Image) 组件。
  • Item Text:用于保存列表项的文本的文本组件。
  • Item Image:用于保存列表项的图像的图像组件。
  • Value:当前所选选项的索引。0 代表第一个选项,1 代表第二个,依此类推。
  • Options:可能选项的列表。可为每个选项指定一个文本字符串和一个图像。

2.2 代码监听

监听方式和上面基本一致,只是参数意义不同一个是Value进度值,一个是下拉选单的索引值


public Dropdown m_DropDown;

void Start()
{
    m_DropDown.onValueChanged.AddListener(OnDropValueChange);
}

void OnDropValueChange(int v)
{
    //切换选项 时处理其他的逻辑...
    Debug.Log("点击下拉控件的索引是..." + v);
}

三,Input Field组件

输入组件:是一种使文本 (Text) 控件的文本可编辑的方法。

3.1 组件介绍

属性

  • Interactable:此组件是否接受输入
  • Transition:确定控件以何种方式对用户操作进行可视化响应的属性。
  • Navigation:确定控件顺序的属性。
  • TextComponent:对用作输入字段内容的文本元素的引用
  • Text:起始值。开始编辑前置于字段中的初始文本。
  • Character Limit:可在输入字段中输入的最大字符数的值。
  • Content Type:内容类型,定义输入字段接受的字符类型。
  • Line Type:换行类型
  • Placeholder:占位符,默认显示值,初始值:“Enter text…”
  • Caret Blink Rate:光标闪烁速率,定义该行上的标记的闪烁速率。
  • Caret Width:光标宽度,定义该行上的标记的宽度。
  • Custom Caret Color:是否开始光标颜色设置
  • Caret Color:光标颜色
  • Selection Color:所选文本部分的背景颜色。
  • Hide Mobile Input:隐藏附加到移动设备屏幕键盘上的本机输入字段。(仅支持IOS)

3.2 代码监听

输入组件:有两个可监听的操作,一个是当内容被改变时,一个是结束编辑时,监听方式和上面差不多,不一样的是此时的参数是组件中用户输入的内容作为字符串被返回来了

public InputField m_InputField;

void Start()
{
    // 当内容被改变时回调
    m_InputField.onValueChanged.AddListener(OnInputValueChanged);
    // 内容编辑结束时回调
    m_InputField.onEndEdit.AddListener(OnInputEndEdit);
}

void OnInputValueChanged(string context)
{
    Debug.Log("输入框内容改变为:" + context);
}

void OnInputEndEdit(string context)
{
    Debug.Log("输入框内容编辑结束, 最终内容为:" + context);
}