纳金网

标题: 如何用其他脚本改变这个脚本中的变量的值? [打印本页]

作者: 比巴卜    时间: 2013-6-24 11:55
标题: 如何用其他脚本改变这个脚本中的变量的值?
这是一个角色HP的脚本
如何用其他脚本改变这个脚本中的 CurrentHealth的值?
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System.Collections;
   
public class Health : MonoBehaviour {
    public float MaxHealth=100;
    public float CurrentHealth;
    public bool Invincible;
    public bool Dead;
        
        
    // Use this for initialization
    void Start () {
        //MAKE THE CURRENT HEALTH THE MAX HEALTH AT START
    CurrentHealth=MaxHealth;
    }
        
    // Update is called once per frame
    void Update () {
        
        //IF INVINCIBLE, HE CANNOT DIE..
        if(Invincible){
        CurrentHealth=MaxHealth;     
        }
        else{
        if(CurrentHealth<=0){
            CurrentHealth=0;
            Dead=true;
        }   
               
        //MAX HEALTH
            if(CurrentHealth>=MaxHealth)CurrentHealth=MaxHealth;
               
            //WHEN DEATH IS UPON HIM
        if(Dead){
                //TELL THE AI SCRIPT HE IS DEAD
            FreeAI AI=(FreeAI)GetComponent("FreeAI");
                if(AI){
            if(AI.IsDead){}
            else AI.IsDead=true;
        }
        }
        }
        
    }
}





作者: 比巴卜    时间: 2013-6-24 11:56
1.通过Find或者碰撞 获得该物体,然后通过GetComponent获得该脚本 然后就能获得这个变量了。
2.如果变量唯一 就直接声明全局变量  public static float CurrentHealth可以直接获得Health.CurrentHealth
作者: 比巴卜    时间: 2013-6-24 11:56
你也可以这样,先在角色脚本里写一个改变CurrentHealth的函数,例如ChangeCurrentHealth().
在其它脚本里先声明一个Health对象:
public GameObject Health;
//遇到要改变的时候,向Health发送消息
Health.SendMessage("ChangeCurrentHealth");
Health脚本就会调用ChangeCurrentHealth()这个函数,至于怎么改变,你自定义~
作者: 比巴卜    时间: 2013-6-24 11:57
建议:单例模式

class MyClass{

       public int a=0;
       public int b=0
       private MyClass(){}
       private static MyClass myClassObject = null;

       public static MyClass getMyClassObj(){
              if(myClassObject == null)
                       myClassObject = new MyClass();
              return myClassObject;
        }




外部调用赋值:MyClass.getMyClassObj().a = 10;
作者: 比巴卜    时间: 2013-6-24 11:57
以上是各位高手给的建议 有兴趣的试试!!




欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5