0

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

错误 CS1061:类型UnityEngine.Component' does not contain a definition forCharacterMotor' 并且找不到扩展方法CharacterMotor' of typeUnityEngine.Component'(您是否缺少 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;
        }
    }
}

}

4

1 回答 1

1

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

您可能应该使用GetComponent的通用形式:

_defaultSpeed = _player.GetComponent<CharacterMotor>().maxForwardSpeed;

如果你打电话GetComponent(typeof(T)),你会得到一个类型的参考Component。您可以将结果转换为 a T,但为什么要麻烦呢?您可以轻松调用GetComponent<T>()以获取该类型的参考。

于 2013-10-16T23:40:09.990 回答