【问题标题】:Unity 3D First Person Controller Script ReferenceUnity 3D 第一人称控制器脚本参考
【发布时间】: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;) 我尝试了很多其他解决方案,但我找不到合适的解决方案!请你帮助我好吗?提前致谢!

vs2019error_image

inspector view

【问题讨论】:

  • 你说名字和使用一个使用标签名的函数,你把名字放在标签里了吗?
  • 没关系,我也把标签“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


【解决方案1】:

我已经在我的 visualstudio 2017 中进行了测试,我必须添加该行:

using UnityStandardAssets.Characters.FirstPerson;

所以我直接从文件夹标准资产中获取脚本

如果你看到脚本,你会看到这一行:

namespace UnityStandardAssets.Characters.FirstPerson

你必须精确找到类的路径

这条线是由 VisualStudio 2017 提出的,不知道为什么不是由 Visual Studio 2019 提出的

【讨论】:

  • 我建议你把 GameObject.FindGameObjectWithTag("Player") 放在 Start() 方法的 GameObject 变量中,因为 FindGameObjectWithTag 不是很快..
猜你喜欢
  • 2013-01-19
  • 2022-01-23
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2013-10-05
相关资源
最近更新 更多