简体   繁体   English

从Unity C#中的其他脚本获取变量时出错

[英]Error with getting variable from other script in Unity C#

This is the code of the class I want to get variable Speed from (attached with Player Object) 这是我要从中获取变量Speed的类的代码(附带Player对象)

public class PlayerManager : MonoBehaviour
{
  public float Speed;

void Update()
   { 
     InvokeRepeating ("RaiseSpeed", 1.0f, 1.5f);
   }

void RaiseSpeed() { Speed += Speed/10; }

}

And this is the code of the class in which I want to use Speed 这是我要使用Speed的类的代码

public class ScoreManager :MonoBehaviour
{
  public Text TextScore;
  public PlayerManager _PlayerManager;
  private int Score;

void Start()
  {
     Score = 0;
     _PlayerManager = GameObject.Find("Player").GetComponent<PlayerManager>;
     //Which is why cause error
  }

void LateUpdate()
  {
     InvokeRepeating("UpdateScoreText", 0.0f, 1.0f);
  }

void UpdateScoreText()
  {
     Score += _PlayerManager.Speed /10;
     TextScore.text = "Score: " + Score.ToString()
  }
}

The Error description: Cannot convert method group 'GetComponent' to non-delegate type 'PlayerManager'. 错误说明:无法将方法组“ GetComponent”转换为非委托类型“ PlayerManager”。 Did you intend to invoke the method? 您是否打算调用该方法?

_PlayerManager = GameObject.Find("Player").GetComponent<GameManager>; You tried to get GameManager instead of PlayerManager 您试图获取GameManager而不是PlayerManager

Try this: 尝试这个:

_PlayerManager = GameObject.Find("Player").GetComponent<GameManager> as PlayerManager;

Updated: 更新:

_PlayerManager = GameObject.Find("Player").GetComponent("PlayerManager") as PlayerManager;

where PlayerManager is name of component in object where is PlayerManager script 其中PlayerManager是对象中组件的名称,其中PlayerManager脚本是

Try replacing 尝试更换

_PlayerManager = GameObject.Find("Player").GetComponent<PlayerManager>;

with

_PlayerManager = GameObject.Find("Player").GetComponent<PlayerManager>();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM