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