1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Unity 3D .3.12版本创建一个按钮 并为该按钮添加点击Click的消息响应函数以及

Unity 3D .3.12版本创建一个按钮 并为该按钮添加点击Click的消息响应函数以及

时间:2023-02-10 12:34:54

相关推荐

Unity 3D .3.12版本创建一个按钮 并为该按钮添加点击Click的消息响应函数以及

1. 创建一个GameObject对象

菜单【GameObject】选择【Create Empty】,此时可在【Hierarchy】窗口看到生成的GameObject对象,并且【Inspector】窗口中也有该对象的相关属性,我们可将该名称更改为自己想定义的名称,也可不改,博主这里改为TestGameObject。

2.创建一个按钮

菜单【GameObject】选择【UI】菜单,并选择【Button】生成一个按钮对象,同样可对该按钮重命名,这里命名为TestButton。

3. 将TestButton按钮和TestGameObject游戏对象绑定

3.1 在【Hierarchy】窗口选中TestGameObject对象,然后在【Inspector】窗口点击“Add Component”,滑动滚动条至底部,选择“New script”新建一个cs脚本。

博主命名为“TestBtn”,此时双击下图红色箭头位置则会打开VS加载该cs脚本文件,如下图

3.2 打开文件后添加如下代码,保存,缩小或关闭VS窗口都行。

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class TestBtn : MonoBehaviour{public Button my_button;static int cnt = 0;// Start is called before the first frame updatevoid Start(){Debug.Log("You Start!");Button btn = my_button.GetComponent<Button>();btn.onClick.AddListener(TestClick);}void TestClick(){cnt += 1;Debug.Log("You have clicked the button! " + cnt.ToString());}// Update is called once per framevoid Update(){}}

此时会发现【inspector】窗口中的Test Btn(Script)一栏多了My_button一项内容,此时我们将【Hierarchy】窗口中原先创建的TestButton直接拖拽到“My_button”一栏右边的“None(Button)”框中,即可绑定完成,如下图

4. 运行测试效果

4.1 此时还可设置按钮显示的文本内容,博主设置为“TestIt”

4.2 在菜单【Windows】--》【General】--》【Console】打开控制台以便查看按钮点击后输出的内容 ,同时点击界面中上方的“播放”符号运行程序,此时可以看到控制台有输出,我这里有两个按钮,所以输出了两行内容,你的话只会输出红色框的一行。

此时点击“TestIt”按钮四次的话,可以在控制台看到输出四次“You have clicked the button”,并且附带序号,并且每次的时间不同,运行成功,Unity3D创建按钮,并且添加按钮点击消息响应事件到此结束。

5. 点击按钮加载场景

5.1 通过触发事件(如按钮点击),然后在事件响应函数中加入场景加载的名称即可,Unity老版(版之前)加载场景使用Application.LoadLevel (SceneName);新版使用SceneManager.LoadScene(SceneName),需要引用 UnityEngine.SceneManagement 包;修改上述部分的TestClick函数部分即可。

void TestClick(){SceneManager.LoadScene("Drive1");}

5.2 需要将场景加载至【File】菜单中的“Build Settings”选项,如下图,打开“Build Settings”界面,直接将场景拖入【Scene In Build】窗口中即可,如下图。

Unity 3D .3.12版本创建一个按钮 并为该按钮添加点击Click的消息响应函数以及点击按钮切换场景

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。