【发布时间】:2020-03-28 18:51:00
【问题描述】:
FPS 控制器脚本可以在 Characters/FirstPersonCharacters 下的 Unity Standard Assets 文件夹中找到。我将它添加到一个名为 Player 的对象中。当我想暂停游戏时(我已经做了一个暂停菜单 UI),我不喜欢它仍然跟随鼠标在屏幕上,所以我想冻结那个旋转。由于我使用的是免费刚体版本,因此 RigidbodyConstrains 不起作用。我需要引用该脚本来编写.enabled = false; 但它不起作用,Unity 无法识别它。我写道:
GameObject.FindGameObjectWithTag("Player").GetComponent<FirstPersonController>().enabled = false;
但它不起作用,即使我导入 UnityStandardAssets(我的意思是在脚本中:using UnityStandardAssets;)
我尝试了很多其他解决方案,但我找不到合适的解决方案!请你帮助我好吗?提前致谢!
【问题讨论】:
-
你说名字和使用一个使用标签名的函数,你把名字放在标签里了吗?
-
没关系,我也把标签“Player”放到了Player对象上。
-
GetComponent 不好,它找不到任何名为“FirstPersonController”的组件,即使我有这样调用的脚本(从我重复的标准资产)附加到播放器对象
-
我没有看到问题这行代码禁用脚本,所以您确认运行程序后在检查器中没有看到启用的脚本?如果将代码行分成两部分 var go = GameObject.FindGameObjectWithTag("Player"); 则没有空引用(go no null) then var b = go.GetComponent... (该值必须为 false?最后一个问题,您在 fpsController 脚本之外的另一个脚本中执行此操作?
-
是的,我在 FirstPersonController.cs 之外的另一个脚本中执行此操作。我在 VS 2019 中工作,所以它用红色强调了错误。它在 之间加下划线。我将编辑问题并附上屏幕截图。
标签: unity3d reference controller