【发布时间】:2019-02-28 15:38:04
【问题描述】:
我正在制作一款赛车游戏,但在倒计时结束前禁用控件时遇到了问题。倒计时脚本的结尾是:
CountDownNumber.SetActive(false);
CountDownNumber.GetComponent<Text>().text = "GO!";
countdownAudio.Play(); //Change to Go Audio
CountDownNumber.SetActive(true);
当这部分运行时,我希望启用汽车对象中的脚本。我尝试过的方法是使用以下行:
usercontrol.GetComponent(CarController).enabled = true;
或
usercontrol.GetComponent<CarController>().enabled = true;
两者都不成功,因为错误消息是:
Assets/CountDown.cs(41,34):错误 CS0103:当前上下文中不存在名称“CarController”
但这是我要启用的 GameObject 中脚本的名称。
关于如何解决此问题的任何想法?
如果有帮助,汽车来自标准资产,因此我想在旅途中启用汽车控制器脚本。
【问题讨论】:
-
您可能需要添加
using语句,以便 C# 编译器知道您指的是哪个 CarController。 -
您可以尝试使用此
Component[] comp = usercontrol.GetComponents(typeof(Component))访问所有组件并通过打印数组元素来检查CarController是否是其中之一? -
确保脚本和类都被称为
CarController,拼写完全相同 -
@AliKanat 问题不在于组件是否在对象上,而是在编译时无法识别类型
CarController -
如果您仅在 VisualStudio 中遇到此问题,我可以关闭并重新打开 VS,或者在某些非常糟糕的情况下关闭 VS 和 Unity,删除除
Assets和ProjectSettings之外的所有文件和文件夹以及重新启动 Unity 并让它重建并编译所有内容