Unity C#在方法中与场景中的其他脚本共享变量

时间:2017-07-18 16:11:56

标签: c# unity3d methods

我正在Unity中开发一个项目,我需要在场景中的两个脚本(脚本1和脚本2)之间共享一个字符串变量(metaData_Content)。但是,我需要共享的变量不是公共的或静态的,它是在脚本1的方法中建立的。因此,我无法从脚本2访问该变量。

脚本1中的重要代码:

public class SimpleCloudHandler : MonoBehaviour, ICloudRecoEventHandler
{
    public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
    {
        string metaData_Content = targetSearchResult.MetaData;
    }
}

脚本2中的重要代码:

void alertPopUp(string metaData_Content){

    //

}

我尝试使用GetComponent函数(如下所示),但只有在脚本1中字符串是公共的时才有效。

    GameObject cloudScript = GameObject.Find("CloudRecognition");
    SimpleCloudHandler simpleCloudHandler = cloudScript.GetComponent<SimpleCloudHandler> ();
    string metaData_Content = simpleCloudHandler.metaData_Content;

问题:

是否有一些解决方法允许我从脚本2中访问metaData_Content字符串?

1 个答案:

答案 0 :(得分:0)

我设法通过将此行添加到SimpleCloudHandler类来修复我的错误:

public string metaData_Content;

然后从string方法中的变量中删除OnNew SearchResult类型。上下文中显示的更改:

public class SimpleCloudHandler : MonoBehaviour, ICloudRecoEventHandler
{
    public string metaData_Content;

    public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
    {
        metaData_Content = targetSearchResult.MetaData;
    }
}

当我之前在方法中留下string类型时,该行正在创建一个新的局部变量,而不是更改公共变量的值。