我正在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字符串?
答案 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
类型时,该行正在创建一个新的局部变量,而不是更改公共变量的值。