C# 如何在统一中改变性格

C# 如何在统一中改变性格,c#,unity3d,C#,Unity3d,我想在unity中更改玩家的速度,但我无法从其他脚本访问CharacterMotor。我在实习医生身上搜索了一下,发现了这个(C#): 但这不起作用,我得到一个错误: Assets/Scripts/MainScript.cs(60,63): error CS1061: Type `UnityEngine.Component' does not contain a definition for `CharacterMotorMovement' and no extension method

我想在unity中更改玩家的速度,但我无法从其他脚本访问CharacterMotor。我在实习医生身上搜索了一下,发现了这个(C#):

但这不起作用,我得到一个错误:

Assets/Scripts/MainScript.cs(60,63): error CS1061: 
Type `UnityEngine.Component' does not contain a definition for   
`CharacterMotorMovement' and no extension method 
`CharacterMotorMovement' of type `UnityEngine.Component' could be 
found (are you missing a using directive or an assembly reference?)

我尝试过一些东西,但我有点被这样一个事实困扰:我搜索的每一个地方都为我提供了同样的解决方案,但都不起作用。有人能帮我吗?

现在它说你必须将角色移动脚本附加到玩家对象。

我也有同样的问题。事实证明,这是因为标准CharacterController脚本是用javascript编写的,您无法从C#脚本中引用CharacterMotor类

幸运的是,有人已经经历了将CharacterMotor、FSInputController和PlatformInputController转换为C#的麻烦


您遇到了什么错误?你必须更具体一点。你的玩家被标记为“玩家”了吗。查找标记为“Player”的对象的代码。如果错误为玩家的空引用,那么您没有标记为witg player的玩家对象。如果错误在2上。第二行,播放器上没有附加CharacterMotor组件(脚本)。我只是把整个错误放在了一起。该对象被标记为播放器,并且在组件中有一个标记。您在哪里找到该示例?我这样问是因为发布的代码显然是错误的-
GetComponent(string)
是要使用的错误覆盖。如果您使用了
Player.GetComponent()…
,那么您可能会更幸运,因为它将返回一个更具体类型的结果。但最终,您提出的问题表明您不了解Unity的组件模型或C#的编译/键入模型的基础知识,因此您最好从一个更简单的项目开始。@CahitBurakKüçksütcü:错误不会发生,因为没有这样的组件,发生这种情况是因为返回基类
组件
结果,需要将其强制转换为
CharacterMotor
,然后才能访问特定于类的属性。您的建议可能正确,也可能不正确,但这不会解决问题中显示的编译错误。看起来这也不是类型转换错误。一定是这样。无法将类型“UnityEngine.Component”隐式转换为“UnityEngine.CharacterMovement”。存在显式转换(是否缺少强制转换?在没有解释的情况下投票给试图帮助的用户不是一个好行为。帖子已被编辑。组件是
CharacterMotor
,而不是
CharacterMovement
Assets/Scripts/MainScript.cs(60,63): error CS1061: 
Type `UnityEngine.Component' does not contain a definition for   
`CharacterMotorMovement' and no extension method 
`CharacterMotorMovement' of type `UnityEngine.Component' could be 
found (are you missing a using directive or an assembly reference?)