unity3D 一个脚本里的值,在另一个脚本里改变,怎么在原脚本重新调用?

我在TaktTime脚本里设置里一个共有的float类型的变量intervalTime,并且在协程里调用了,然后我在另一个脚本里调用TaktTime脚本里的intervalTime,并且改变了他的值,如何在原脚本里的协程重新调用,我这个在其他脚本里改变了的intervalTime变量的值

第1个回答  2020-11-18

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!

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

有好几种方法都可以

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

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


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>() 得到另一个类的运行实例。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

本回答被网友采纳