为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个脚本访问变量/函数

从另一个脚本访问变量/函数

牛魔王的故事 2019-08-03 11:03:43
从另一个脚本访问变量/函数所以我试图通过触摸一个立方体来改变另一个脚本中的变量。电流设置1x播放器1倍敌人每个人都有自己的脚本Enemy_Stats & Character_Stats正如您在这个小片段中所看到的,从另一个脚本访问变量是一个很好的解决方法。void OnCollisionEnter(Collision collision){     if (collision.gameObject.tag == "Enemy")     {         collision.gameObject.GetComponent<Enemy_Stats>().Health =              collision.gameObject.GetComponent<Enemy_Stats>().Health              - gameObject.GetComponent<Character_Stats>().AttackDamage;         if (collision.gameObject.GetComponent<Enemy_Stats>().Health <= 0)         {             Destroy(collision.gameObject);         }     }}我是统一的新手,但是难道没有一种方法可以用这样的东西来引用它:collision.Health?
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞


如何从另一个类访问变量/函数。要访问或调用的变量或函数必须为publicprivate.

public class ScriptA : MonoBehaviour{

    public int playerScore = 0;

    void Start()
    {

    }

    public void doSomething()
    {

    }}

存取变量playerScore在……里面ScriptA从…ScriptB..首先,找到脚本或组件附加到的GameObjectGameObject.Find函数,然后使用GetComponent函数检索附加到它的脚本或组件。

public class ScriptB : MonoBehaviour{

    ScriptA scriptInstance = null;  

    void Start()
    {
      GameObject tempObj = GameObject.Find("NameOfGameObjectScriptAIsAttachedTo");
      scriptInstance = tempObj.GetComponent<ScriptA>();

      //Access playerScore variable from ScriptA
      scriptInstance.playerScore = 5;

     //Call doSomething() function from ScriptA
      scriptInstance.doSomething();
    }}




查看完整回答
反对 回复 2019-08-05
?
桃花长相依

TA贡献1860条经验 获得超8个赞

自那以后没有Health不是碰撞对象的一部分,但是Enemy_Stats..您可以缓存Component(这就是EndemyStats是什么)如果您多次使用它来节省一些输入(以及一些性能,但对于本例来说,这是相当有限的)。此外,您还可以缓存“已知”组件,如本例中所示。Player_Stats..你可以这样做,例如Start或者用公共变量和检查员。

不过,你应该做的是让敌人对他的生命负责,而不是让玩家负责。Destroy-部分-Enemy_Stats(确切地说是进入健康财产)。




查看完整回答
反对 回复 2019-08-05
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

第一件要缩短(并最终更快)的事情是存储以下内容:gameObject.GetComponent<Character_Stats>()在……上面Start()在私有变量中(如果可以避免的话,应该避免频繁调用GetComponent)。

对于健康变量,一种避免GetComponent调用可能是缓存:您创建一个Dictionary<GameObject, Enemy_Stats>一旦这个游戏物体相撞一次


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 357 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信