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



>我正在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字符串?

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

public string metaData_Content;

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

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

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

最新更新