Unity3D中在一个脚本中怎么修改另一个脚本中定义的全局变量,比如定义

的游戏积分... 的游戏积分 展开
 我来答
百度网友c7e1877
推荐于2017-12-16 · TA获得超过4670个赞
知道大有可为答主
回答量:4996
采纳率:81%
帮助的人:1413万
展开全部

C# 中没有全局变量,你是不是指成员变量(用 UnityScript 语言只是省略的类名,那里看上去的全局变量其实也是成员变量)。

有好几种方法都可以

1. 把另一个类中的成员做成 static 的,用 MyClass.member 的方法调用

2. 把另一个类(继承于 MonoBehaviour)做出单件模式,用类似下面的方法:

    private static MyClass instance;
    public static MyClass Instance {
        get {
            // This should NEVER happen, so we want to know about it if it does
            if (instance == null) {
                Debug.LogError("MyClass instance does not exist");
            }
            return instance;
        }
    }

    void Awake()
    {
        instance = this;
    }

3. 因为 MonoBehaviour 的本身就是 Component,所以一个继承于 MonoBehaviour 的行为脚本本质上和 Transform、Collider 等一样是游戏对象组件。首先拿到这个脚本挂载的 gameObject(如果两个脚本挂载在一个 gameObject 下就不用得到,因为默认就是当前 gameObject),用 gameObject.GetComponent<MyClass>() 得到另一个类的运行实例。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式