C# 从另一个脚本访问角色马达

C# 从另一个脚本访问角色马达,c#,unity3d,C#,Unity3d,正在尝试创建运行脚本。访问玩家的CharacterMotor并提高移动速度,但编译器说这些对象不存在。 使用stock First Person角色控制器 错误CS1061:类型UnityEngine.Component'不包含CharacterMotor'的定义,并且找不到类型UnityEngine.Component'的扩展方法CharacterMotor' }看起来您刚从UnityScript迁移到C# 您可能应该使用以下形式: \u defaultSpeed=\u player.GetC

正在尝试创建运行脚本。访问玩家的CharacterMotor并提高移动速度,但编译器说这些对象不存在。 使用stock First Person角色控制器

错误CS1061:类型<代码>UnityEngine.Component'不包含<代码>CharacterMotor'的定义,并且找不到类型<代码>UnityEngine.Component'的扩展方法<代码>CharacterMotor'


}

看起来您刚从UnityScript迁移到C#

您可能应该使用以下形式:

\u defaultSpeed=\u player.GetComponent().maxForwardSpeed;

如果调用
GetComponent(typeof(T))
,您将得到类型为
Component
的引用。您可以将结果强制转换为
T
,但为什么要麻烦呢?您可以很容易地调用
GetComponent()
来获取该类型的引用。

您是否在Inspector中拖放了\u player实例,或者以其他方式确保在脚本运行时设置了\u player?添加了错误。我得到:ype UnityEngine.Component“不包含CharacterMotor的定义”,并且找不到ype UnityEngine.Component的扩展方法CharacterMotor(是否缺少using指令或程序集引用?)。脚本甚至无法编译。
public class PlayerRun : MonoBehaviour {
public GameObject _player;
private float _runSpeed = 10;
private float _defaultSpeed;

// Use this for initialization
void Start () 
{
    _defaultSpeed = _player.GetComponent("CharacterMotor").CharacterMotor.maxForwardSpeed;
}

// Update is called once per frame
void Update () 
{
    if (Input.GetKeyDown(KeyCode.LeftShift))
    {
        _player.GetComponent("CharacterMotor").CharacterMotor.maxForwardSpeed = _runSpeed;
        _player.GetComponent("CharacterMotor").CharacterMotor.maxSidewaysSpeed = _runSpeed;
        _player.GetComponent("CharacterMotor").CharacterMotor.maxBackwardsSpeed = _runSpeed;
    }
    else
    {
        if (_player.GetComponent("CharacterMotor").CharacterMotor.maxForwardSpeed == _runSpeed)
        {
            _player.GetComponent("CharacterMotor").CharacterMotor.maxForwardSpeed = _defaultSpeed;
        _player.GetComponent("CharacterMotor").CharacterMotor.maxSidewaysSpeed = _defaultSpeed;
        _player.GetComponent("CharacterMotor").CharacterMotor.maxBackwardsSpeed = _defaultSpeed;
        }
    }
}
_defaultSpeed = _player.GetComponent<CharacterMotor>().maxForwardSpeed;