查看: 818|回复: 4
打印 上一主题 下一主题

如何用其他脚本改变这个脚本中的变量的值?

[复制链接]

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2013-6-24 11:55:40 |只看该作者 |倒序浏览
这是一个角色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;
        }
        }
        }
        
    }
}




分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2013-6-24 11:56:13 |只看该作者
1.通过Find或者碰撞 获得该物体,然后通过GetComponent获得该脚本 然后就能获得这个变量了。
2.如果变量唯一 就直接声明全局变量  public static float CurrentHealth可以直接获得Health.CurrentHealth
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2013-6-24 11:56:47 |只看该作者
你也可以这样,先在角色脚本里写一个改变CurrentHealth的函数,例如ChangeCurrentHealth().
在其它脚本里先声明一个Health对象:
public GameObject Health;
//遇到要改变的时候,向Health发送消息
Health.SendMessage("ChangeCurrentHealth");
Health脚本就会调用ChangeCurrentHealth()这个函数,至于怎么改变,你自定义~
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2013-6-24 11:57:04 |只看该作者
建议:单例模式

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;
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2013-6-24 11:57:42 |只看该作者
以上是各位高手给的建议 有兴趣的试试!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-27 14:05 , Processed in 0.096621 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部