2.2 编辑脚本

在场景中摆放好按钮图片后,要对按钮图片进行控制,就需要编写程序来完成。

2.2.1 编写程序

步骤1 创建脚本文件

(1)在Project面板的Assets文件夹上单击鼠标右键,在弹出的快捷菜单中选择Create→Folder命令,创建用来存放脚本文件的文件夹,并命名为Script_UI。

(2)接下来双击打开Script_UI文件夹,在文件夹中单击鼠标右键,依次选择Create→C# Script命令,创建脚本文件,并命名为“UI_Control.cs”,如图2-12所示。然后双击打开UI_Control.cs文件进行程序编写。

图2-12 新建程序文件夹

步骤2 编写脚本

【程序代码说明】

第5行:因为我们需要鼠标对按钮进行不同的操作时,按钮应该呈现不同的状态,可以利用按钮图片颜色不同来表示鼠标对按钮的不同操作,因此需要声明一个Sprite类型的数组SpriteTexture,来存储不同颜色的按钮图片。按钮图片有“*_0”“*_1”“*_2”三种,分别对应光标没在按钮上的正常状态,光标在按钮上的悬浮状态和鼠标按下按钮的按下状态,故设置SpriteTexture数组元素个数为3,其中“*_0”图片对应数组第0个元素,“*_1”图片对应数组第1个元素,“*_2”图片对应数组第2个元素。

第6行:接下来需要声明一个SpriteRenderer,这是Unity提供的用来切换Sprite外观的组件,通过此组件可以检测当前触发事件的Sprite是什么,并从数组中指定要显示数组中的第几张图片进行切换。

第7~10行:获得当前游戏体对象的SpriteRenderer组件,为Sprite_Renderer初始化。在Unity中,场景中的物体都可以称为是一个游戏体(GameObject),可以使用GetComponent函数从当前游戏对象获取组件,只在当前游戏对象中获取,没得到就返回null,不会去子物体中寻找。

第13~16行:在光标移入状态下,利用SpriteRenderer组件切换Sprite外观为SpriteTexture数组中第1个元素对应的图片。

第17~20行:在鼠标按下状态下,利用SpriteRenderer组件切换Sprite外观为SpriteTexture数组中第2个元素对应的图片。

第21~24行:在鼠标弹起状态下,利用SpriteRenderer组件切换Sprite外观为SpriteTexture数组中第0个元素对应的图片。

第25~28行:在光标移出状态下,利用SpriteRenderer组件切换Sprite外观为SpriteTexture数组中第0个元素对应的图片。

2.2.2 将脚本与对象关联起来

步骤1 建立程序与脚本的连接

(1)编写完脚本后,需要将脚本与对象进行关联,才能实现对按钮图片的控制。首先将Project面板中的UI_Control程序文件拖曳到Hierarchy面板的Button_1按钮上。

(2)拖曳成功后选中Button_1按钮,在右侧的Inspector面板中可以看到UI_Control脚本组件,如图2-13所示。其他按钮也可以按照统一的方法进行设置。

图2-13 建立程序与脚本之间的连接

步骤2 指定数组内容

建立连接后,选中Button_1对象,在Inspector面板中找到UI_Control组件区,打开Sprite Texture下拉列表,为程序中声明的SpriteTexture数组指定图片文件。程序中已经设置文件“1_0”状态为0,文件“1_1”状态为1,文件“1_2”状态为2,因此在Sprite Texture的Element处将图片文件“1_0”拖曳至Element0中,将图片文件“1_1”拖曳至Element1中,将图片文件“1_2”拖曳至Element2中,完成设置后的效果如图2-14所示。其余按钮也按照上述步骤进行操作,注意图片文件的不同即可。

图2-14 为“Button_1”组件数组赋值

步骤3 加入碰撞检测器

在Hierarchy面板中选中Button_1对象,在菜单栏依次选择Component→Physics2D→Box Collider2D命令加入碰撞检测器,或者在Inspector面板下方单击Add Component按钮,添加碰撞检测器Box Collider2D,如图2-15所示。其余按钮也按照此步骤添加2D碰撞检测器。

图2-15 加入碰撞检测器

步骤4 保存场景

(1)选择菜单栏中的File→Save Scenes命令进行场景保存,将该场景保存在本项目的Assets文件夹中,场景名字为task3_UI。

(2)这样菜单界面就做好了,运行软件进行测试,可以看到按钮已经能显示出动态效果了。