Unity中如何在另一个脚本中调用按钮的OnClick点击事件方法
实现方案
方案1:无代码修改快速实现
直接用你现有脚本,通过编辑器绑定即可:
- 确认
Transition脚本已挂载到场景中持有过渡动画的对象上,且Animator组件已配置好名为Start的Trigger参数 - 选中主菜单的Play按钮,在Inspector面板找到Button组件的OnClick 事件列表,点击「+」新增事件绑定
- 将挂载了
Transition脚本的对象拖入事件的赋值框 - 点击函数下拉菜单,选择
Transition分类下的LoadNextLevel()方法 - 可删除
Transition脚本中Update函数内的鼠标点击检测代码,临时方案即可替换完成
方案2:逻辑统一管理(更推荐)
调整MainMenu脚本,让菜单逻辑统一收口,便于后续维护:
- 修改
MainMenu代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class MainMenu : MonoBehaviour { // Inspector面板中赋值过渡控制器实例 public Transition transitionCtrl; public void PlayGame () { // 调用过渡逻辑加载下一场景,不再直接切场景 transitionCtrl.LoadNextLevel(); } public void QuitGame () { Debug.Log("QUIT"); Application.Quit(); } }
- 编辑器配置:
- 将挂载了
Transition脚本的对象拖入MainMenu组件的transitionCtrl字段完成赋值 - 选中Play按钮,在OnClick事件中绑定
MainMenu的PlayGame()方法即可
注意事项
- 过渡动画的Animator Controller必须提前添加名为
Start的Trigger参数,否则动画无法正常触发 transitionTime的时长建议和过渡动画的总时长保持一致,避免出现动画未结束就切场景、或动画结束后长时间等待的问题- 如果多个场景需要复用过渡效果,可将过渡对象封装为单例或独立加载场景,减少重复配置
内容的提问来源于stack exchange,提问作者ItsDamu
相关产品推荐
相关产品推荐

