最新消息:

Unity 跨脚本获取变量的值

编程 4014浏览

最近一位用 Unity 开发的小伙伴问我如何跨脚本获取变量的值。当时我很忙没有时间分心再加上这个问题很简单,所以让他自己去百度。后来说搜不到,于是我本着必须教会你如何使用百度的心态来教他来搜这个问题。

后来...我发现我也搜不到。。。难道我搜索的姿势也不对?

可以搜到的全是调用另一个脚本中的函数并改变它的数值,并没有直接获取直接来用的。

那么,在这里就来介绍一种方法,当然你有更好的方法或者建议也可以在 我的微博 给我留言。接下来举个例子吧,假设你在 A 脚本中定义了一个 bool 类型的变量,当这个变量为真的时候执行 B 脚本中的某段代码。代码如下:

A.cs:

using UnityEngine;
using System.Collections;
public class A : MonoBehaviour {
 static public bool info;
 int i;
 void Start () {
 }
 void Update () {
  ++i;
  Awake();
 }
 void Awake () {
  if(0==i%2) {
   info = true;
  } else {
   info = false;
  }
 }
}

B.cs:

using UnityEngine;
using System.Collections;
public class B : MonoBehaviour {
 void Start () {
 }
 void Update () {
 if (A.info) {
   Debug.Log ("info is true!");
  } else {
   Debug.Log ("info is false!");
  }
 }
}

为什么 A 脚本中的 Awake() 函数体要在 Update() 中反复调用呢?在脚本载入后,编辑模式下的赋值工作是在 Awake() 之前执行,但是程序运行时如果要修改变量的值,那么必然是在 Awake() 之后了,这里我用了一个循环判断 i 变量的值,i 是一直在变的,所以我要让 Awake() 重复执行才行。如果你所需要的功能中没有循环赋值或者循环判断,可以不用重复执行。在这里我还是建议小伙伴们要搞清楚 Unity 脚本的生命周期。

好了,Unity 跨脚本获取变量的值 的方法就分享到这里,非常感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » Unity 跨脚本获取变量的值

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者