【发布时间】:2017-07-18 16:11:56
【问题描述】:
我正在 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 字符串?
【问题讨论】:
-
将其设为公共变量?我在这里错过了什么?
-
如何将该方法的返回类型更改为字符串并返回metaData_content?
-
要么将其设为公共变量,要么创建包装变量的公共属性,要么编写返回变量的公共方法。有许多选项可供您使用,但它们要求您实施 一些公开的东西。
-
为什么不能直接改呢?至于 ryemoss 更改方法返回类型的想法,我认为这不是一个好主意,因为该方法看起来像是从另一个脚本调用的回调函数。我认为这是因为它说
OnSomething..... -
程序员有一个很好的观点,如果这是一个回调函数,你不应该编辑返回类型。除非有理由你不能首先在方法之外将
metaData_Content声明为公共字符串,否则你应该按照 Serlite 的建议创建一个新的公共变量,为其分配 metadata_content 的值,然后检索新变量在你的第二个脚本中。