iLeichun

当前位置: 首页 > Unity3d

Unity某个类访问另一个类成员的几种方式

分类:Unity3d   来源:网络   时间:2019-07-25 15:00:01

Unity中的脚本大多数都是绑定到某个游戏对象中,那么某个类要如何才能访问到另一个类的属性和方法?下面提供几种方式,供参考:


方式1:设置被调用类为单例

public class PlayerAttack : MonoBehaviour {  

    public static PlayerAttack _instance; // static关键字,单例模式   

  

    void Awake(){  

        _instance = this;// 确保在使用前已被初始化  

    }  

  

    public void TakeDamage(int damage){  // 可被外部调用的方法

          

    }  

}


public class Enemy : MonoBehaviour {

   void Attack(){      // 当敌人攻击主角时

      PlayerAttack._instance.TakeDamage(20);

   }

}


方式2:设置被调用类的属性、方法为static

public class PlayerAttack : MonoBehaviour {  

    public static void TakeDamage(int damage){  // 可被外部调用的方法

          

    }  

}


方式3:使用GameObject的SendMessage()

public class PlayerAttack : MonoBehaviour {  

    public void TakeDamage(int damage){  // 可被外部调用的方法

          

    }  

}


public class Enemy : MonoBehaviour {  

    void Attack(){  

      // 主角模型的tag为PlayerBoy

        GameObject p = GameObject.FindGameObjectWithTag("PlayerBoy");

        p.SendMessage("TakeDamage", 20);  

    }  

}


方式4:获取到某个对象的Script组件

这个脚本放在cube上 

public class Score : MonoBehaviour {  

    public  int allScore=100;  

    void Update () {  

       ...

    }  

}  


访问Score.allScore

public class Text : MonoBehaviour {  

    public GameObject Obj1;  

    void Start () {  

       Obj1 = GameObject.Find("Cube");  

       Score script=Obj1.GetComponent<Score>(); // 取对象的Script组件

       Debug.Log(script.allScore);   

    }  

}  


更多