Unity 3D CS0246 问题 [关闭]
Posted
技术标签:
【中文标题】Unity 3D CS0246 问题 [关闭]【英文标题】:Unity 3D CS0246 Issue [closed] 【发布时间】:2021-10-02 04:37:09 【问题描述】:早安/晚安!我已经在 Unity 中编码了几个星期,现在我正在玩视频播放器。我正在尝试在 Unity 中重新创建电视,因此我决定创建一个允许我创建一系列视频剪辑的课程。我完成了课程并修复了一些错误,但 Unity 一执行就出现了两个 CS0246(找不到 VideoPlayer 和 VideoClip 的类型或命名空间)错误。我在网上搜索了错误并寻找解决方案,但没有一个对我有用。我检查了命名空间文档,但我仍然感到困惑。我没有任何同名的脚本,也没有在代码中看到任何明显的错误。这是我目前所拥有的,只有几行:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(VideoPlayer))] //needed or else I would receive an extra error
public class TVChannels : MonoBehaviour
public VideoClip[] channels = new VideoClip[6];
private VideoPlayer vidplay;
void Start()
vidplay = gameObject.GetComponent<VideoPlayer>();
public PlayVideo(int id)
if (id < 0 || id >= channels.Length)
id = 0;
return; //Since it's not void it needed a return statement
vidplay.clip = channels[id];
vidplay.Play();
我一直在玩[RequireComponent(typeof(VideoPlayer))]
,因为这是我第一次使用它(并且相信它可能是造成问题的原因)。我知道它会检查组件是否在游戏对象上(并且视频播放器在),并且它没有附加到没有播放器的对象上。如果有人知道我可以做些什么来解决这个问题,那将会很有帮助!谢谢!
【问题讨论】:
请edit您的问题标题清楚地描述您遇到的问题或您提出的问题。 Unity3d 是你在标签中提供的信息,CS0246 issue 没有任何意义。您的标题应该足够清晰和具体,以便对本网站的未来用户有意义,他们正在浏览搜索结果列表以试图找到问题的解决方案,而您当前的标题不会提供该信息。 @Tacoタコス 够公平的。 如果您阅读统一文档,它会告诉您要添加哪个命名空间。 【参考方案1】:CS0246 错误意味着在您文件中当前导入的任何命名空间中都找不到您使用的类型。
根据Unity的documentation,VideoPlayer
是UnityEngine.Video
命名空间中的一个类。这是由页面顶部类型名称下方的class in UnityEngine.Video
指定的。
您现在有两个选择。
第一个是完全限定类型名,通过在类型前写命名空间:
void Start()
// we prefix VideoPlayer with its namespace, below:
vidplay = gameObject.GetComponent<UnityEngine.Video.VideoPlayer>();
然后你对VideoClip
做同样的事情。这是上面链接的文档中的代码示例所使用的方式,但我个人觉得它有点笨拙。我更喜欢第二种方法,即通过在文件顶部添加 using 指令来导入整个命名空间:
using UnityEngine;
using UnityEngine.Video; // add this here
附带说明,即使进行了这些修复,您共享的代码也不会按原样编译:PlayVideo
不是构造函数,因此它需要一个返回类型,在这种情况下为 void
.
【讨论】:
以上是关于Unity 3D CS0246 问题 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Assets/FollowDestination.cs(6,13): error CS0246: The type or namespace name `NavMeshAgent' could