Unity某个类访问另一个类成员的几种方式
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);
}
}
- 默认分类(20)
- J2EE(25)
- Java(56)
- PHP(55)
- SEO(10)
- 网页设计(20)
- 网站建设(37)
- 数据库(7)
- JavaScript(17)
- JQuery(6)
- MySQL(20)
- SQL Server(6)
- Access(1)
- Oracle(6)
- office(6)
- Dreamweaver(4)
- Photoshop(12)
- Flash(9)
- Fireworks(13)
- CSS(14)
- HTML(4)
- .NET(7)
- ASP(2)
- DB2(1)
- Ajax(2)
- Linux(12)
- Struts(7)
- Hibernate(8)
- Spring(2)
- Jsp(22)
- Asp(8)
- C#(3)
- C++(1)
- 网络安全(5)
- 软件工程(7)
- XML(1)
- English(2)
- 计算机等级考试(2)
- 计算机病毒(4)
- 个人日志(76)
- 互联网(15)
- ActionScript(10)
- Android(3)
- 数据结构与算法(1)
- 游戏策略(3)
- 美文翻译(2)
- 编程开发(19)
- 计算机应用(4)
- 计算机(10)
- Unity3d(6)
- 其他(1)
- egret(1)