Unity中VideoManager脚本‘got void’报错的解决及代码修复求助
Unity VideoManager脚本错误修复
原代码中的错误点:
- 未引入
UnityEngine.Video命名空间,导致VideoPlayer和VideoSource无法识别 GetComponent语法错误,尖括号前后多余空格且转义符使用错误URLToVideo方法参数定义错误,写成string.Url,正确应为string url- 变量名拼写错误:
videoPLayer应为videoPlayer(大小写不一致) - 事件订阅语法完全混乱:
videoPlayer.prepareCompleted +=VideoPlayer)prepare Completed;格式错误,方法名不能含空格,不符合C#事件订阅规则 - 回调方法定义语法错误:
VideoPlayer)prepareCompleted括号位置错误,方法名格式不规范 - 调用
Play方法时未加括号,正确应为Play();
修复后的完整代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Video; // 新增Video命名空间 public class VideoManager : MonoBehaviour { private VideoPlayer videoPlayer; private void Start() { // 修正GetComponent语法 videoPlayer = GetComponent<VideoPlayer>(); } public void Play() { videoPlayer.Play(); } public void Pause() { videoPlayer.Pause(); } public void Stop() { videoPlayer.Stop(); } // 修正参数定义 public void URLToVideo(string url) { videoPlayer.source = VideoSource.Url; videoPlayer.url = url; // 修正变量拼写错误 videoPlayer.Prepare(); // 修正事件订阅语法 videoPlayer.prepareCompleted += VideoPlayer_PrepareCompleted; } // 修正回调方法定义语法 private void VideoPlayer_PrepareCompleted(VideoPlayer source) { // 修正方法调用语法 Play(); } }
关键修复说明:
- 命名空间:必须添加
using UnityEngine.Video;,Unity视频播放相关类均在此命名空间下,缺失会导致类型未定义错误。 - 语法规范:C#对泛型写法、方法调用、事件订阅有严格要求,比如泛型尖括号不能加多余空格,方法调用必须带括号,事件订阅要使用正确的方法名格式。
- 变量一致性:变量名严格区分大小写,避免拼写错误引发空引用或编译错误。
- 事件回调:
prepareCompleted是VideoPlayer的事件,订阅时需指定参数类型匹配的回调方法,确保事件触发后能正确执行逻辑。
内容的提问来源于stack exchange,提问作者Ang Jia Xing
相关产品推荐
相关产品推荐

