【Unity3D】一个脚本如何调用另一个脚本的变量/函数

Unity中,一个脚本如何调用另一个脚本的变量

在Unity中,你可以通过多种方式在脚本间共享数据。以下是一种常见的方法,通过公开变量或属性来实现:

首先,假设你在一个脚本中定义了一个JSON变量,我们将这个脚本称为ScriptA

using UnityEngine;

public class ScriptA : MonoBehaviour
{
    
    
    public string jsonVariable = "{}"; // JSON variable
}

然后,在另一个脚本中,我们称之为ScriptB,你可以通过获取ScriptA的引用来访问这个JSON变量:

using UnityEngine;

public class ScriptB : MonoBehaviour
{
    
    
    public ScriptA scriptA; // Reference to ScriptA

    void Start()
    {
    
    
        // Access the jsonVariable from ScriptA
        string jsonFromScriptA = scriptA.jsonVariable;
        Debug.Log(jsonFromScriptA);
    }
}

在Unity的编辑器中,你需要将ScriptA的实例拖动到ScriptB的公开字段中,以建立它们之间的引用。当ScriptB运行时,它将能够访问ScriptA中的jsonVariable

请注意,这种方法的前提是ScriptAScriptB都附加在同一场景的游戏对象上,或者ScriptA附加在一个持久的游戏对象上,这个游戏对象在加载新场景时不会被销毁(例如,使用了DontDestroyOnLoad)。如果ScriptAScriptB不在同一场景,或者你希望更灵活地共享数据,你可能需要使用更复杂的模式,如单例或服务定位器。

Unity中,一个脚本如何调用另一个脚本的函数

在Unity中,一个脚本可以通过获取另一个脚本的引用来调用其函数。以下是一个例子来说明这个过程:

假设你有一个脚本,我们叫它ScriptA,它有一个你想要调用的函数:

using UnityEngine;

public class ScriptA : MonoBehaviour
{
    
    
    public void MyFunction()
    {
    
    
        Debug.Log("Function called from ScriptA");
    }
}

在另一个脚本中,我们叫它ScriptB,你可以获取ScriptA的引用并调用其函数:

using UnityEngine;

public class ScriptB : MonoBehaviour
{
    
    
    public ScriptA scriptA; // Reference to ScriptA

    void Start()
    {
    
    
        // Call the function from ScriptA
        scriptA.MyFunction();
    }
}

在Unity的编辑器中,你需要将ScriptA的实例拖动到ScriptB的公开字段中,以建立它们之间的引用。当ScriptB运行时,它将能够调用ScriptA中的MyFunction函数。

请注意,这种方法的前提是ScriptAScriptB都附加在同一场景的游戏对象上,或者ScriptA附加在一个持久的游戏对象上,这个游戏对象在加载新场景时不会被销毁(例如,使用了DontDestroyOnLoad)。如果ScriptAScriptB不在同一场景,或者你希望更灵活地共享数据,你可能需要使用更复杂的模式,如单例或服务定位器。

猜你喜欢

转载自blog.csdn.net/weixin_41932970/article/details/134088975