龙空技术网

【4.UI和调度器】4.UI与调度器

青少年编程ABC 12

前言:

此时姐妹们对“字符串的格式控制符用什么表示”大体比较着重,小伙伴们都需要了解一些“字符串的格式控制符用什么表示”的相关文章。那么小编也在网摘上收集了一些对于“字符串的格式控制符用什么表示””的相关文章,希望姐妹们能喜欢,你们一起来了解一下吧!

【4.UI和调度器】4.UI与调度器4.1 UI 制作方法将 UI 组件配置到场景视图中;编写切换 UI 的调度器脚本;创建调度器对象并挂载调度器脚本;配置 UI 组件

在层级窗口中选择 Create -> UI -> Text,此时在层级窗口中新增加了一个 Canvas 对象, 在 Canvas 对象下包含了 Text 组件。由于 UI 的设计画面通常比游戏设计画面大很多,所以有时可能无法在场景视图中看到 UI 组件,此时可以在层级窗口中双击 UI 组件,这样视点就移动到了该 UI 组件的附近。

虽然场景视图中的 UI 设计画面看起来很大,但其实际大小与游戏画面是对应的

修改层级窗口中的 Text 组件的名称为 “Distance”:在层级窗口中选择并单击 Text,此时名称变为可编辑状态,输入:Distance 回车即可。

调整 Text 组件的位置和尺寸:选中组件,在检视器窗口中设置 RectTransform 项的 PosX、PosY、PosZ 依次为0,0,0,Width 和 Heigh 为 360,40,设置 Character 的 Font Size 为 32,Paragraph 的 Alignment 的纵向与横向为居中。

关于 EventSystem

在 UI 控件添加后,在层级窗口中和 “Canvas” 一起添加的还有 “EventSystem”,EventSystem 是一个用于将用户输入转发到各个 UI 组件的中转对象。要正常使用 UI 组件必须有这个对象。

EventSystem 还可以屏蔽输入、修改键盘和鼠标的设置等。

关于 Rect Transform

UI 系统表示组件的坐标并不是 “Transform”,而是“Rect Transform”,其区别:

Transform 能够调整位置、旋转、尺寸等值;而 Rect Transform 在此基础上还能够调整轴心点(pivot)与锚点(anchor)的位置。

轴心点:旋转和缩放时使用的中心点

锚点:放置 UI 组件时的位置基准点

4.2 创建切换 UI 的调度器

创建调度器脚本,代码如下:

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Director : MonoBehaviour{    GameObject car;    GameObject flag;    GameObject distance;    // Start is called before the first frame update    void Start()    {        car = GameObject.Find("car");        flag = GameObject.Find("flag");        distance = GameObject.Find("Distance");    }    // Update is called once per frame    void Update()    {        float XCar = car.transform.position.x;        float XFlag = flag.transform.position.x;        float length = XFlag - XCar;        this.distance.GetComponent<Text>().text = "距离目标:" + length.ToString("f3") + "米";    }}

由于在调度器脚本中需要获取场景中的对象,而在场景中我们使用了 UI 组件,所以需要引入 UnityEngine.UI,用来处理 UI 组件。

要获取游戏对象,可以用 GameObject 的 Find 方法来获取,其参数为游戏对象的名称,如果游戏场景中某对象的名称与参数相同,则返回该对象。

调度器脚本还需要计算小车和旗帜之间的距离,首先需要获取游戏对象的位置,可以使用:

游戏对象.transform.position 

来获取其位置,位置数据是一个 Vector3 类型,其 x、y、z 成员变量代表各个轴上的值。

获取 UI 对象,使用:

游戏对象.GetComponent<UI对象类型>()

来获取,其 text 成员变量就是在 Text 组件上显示的文字。

浮点数转换字符串,使用:

浮点数.ToString(格式控制符)

格式控制符:

整型

格式:D[位数] - 转换为整型表示,如果位数不够,则在左侧插入0,如 456.ToString("D5") -> 00456

小数型

格式:F[位数] - 转换为小数形式,指定小数点后的位数,如 12.3456.ToString("F3") - > 12.345

4.3 将脚本挂载到调度器对象上

通常情况下,我们可以使用“空对象”作为调度器对象。给空对象挂载调度器脚本后,该空对象就变成了调度器对象,从而可执行调度任务。所以:

调度器的制作方法:

编写调度器脚本创建空对象给空对象挂载调度器脚本

在层级窗口中创建空对象并挂载刚才创建的调度器脚本,运行游戏,观察效果。

将脚本修改如下:

void Update(){    float XCar = car.transform.position.x;    float XFlag = flag.transform.position.x;    float length = XFlag - XCar;    if (length <= 0)    {        this.distance.GetComponent<Text>().text = "游戏结束";    }    else    {        this.distance.GetComponent<Text>().text = "距离目标:" + length.ToString("f3") + "米";    }}

再看看效果。

标签: #字符串的格式控制符用什么表示