最近一位用 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 跨脚本获取变量的值
如果文章对你有帮助,欢迎点击上方按钮打赏作者