我有两个脚本 的 simplecloudhander.cs cloudtarget.cs
simplecloudhander.cs
public string mTargetMetadata = "";
public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
GameObject newImageTarget = Instantiate(ImageTargetTemplate.gameObject) as GameObject;
GameObject augmentation = null;
string model_name = targetSearchResult.MetaData;
if( augmentation != null )
augmentation.transform.parent = newImageTarget.transform;
ImageTargetAbstractBehaviour imageTargetBehaviour = mImageTracker.TargetFinder.EnableTracking(targetSearchResult, newImageTarget);
Debug.Log("Metadata value is " + model_name );
mTargetMetadata = model_name;
}
我想在另一个 cloudtarget.cs脚本中访问 mTargetMetadata 值
这里是cloudtarget.cs脚本
void OnGUI() {
SimpleCloudHandler sc = new SimpleCloudHandler ();
GUI.Label (new Rect(100,300,300,50), "Metadata: " + sc.mTargetMetadata);
}
但我无法在另一个脚本中获取mTargetMetadata值
答案 0 :(得分:2)
您必须在 cloudtarget 脚本中添加对该脚本的引用。只需将 SimpleCloudHandler 类型的公共变量添加到类 cloudtarget ,而不是OnGUI方法,稍后拖放带有 SimpleCloudHandler 的GameObject检查器中的脚本 cloudtarget 。
示例:
使用附加的SimpleCloudHandler脚本拖放MainCamera =>通过检查器显示 cloudtarget 脚本的公共 SimpleCloudHandler 变量。
有多种方法可以在Unity中进行引用,我建议您查看Unity提供的文档
答案 1 :(得分:0)
如果您的脚本附加到同一个对象,那么您可以使用GetComponent
这样的
gameObject.GetComponent<simplecloudhander>().mTargetMetadata
如果它们没有附加到同一个gameObject
,您可以先使用GameObject.Find
找到脚本所附加的gameObject
,您应该使用{{1}的名称1}}找到它,然后使用gameObject
获取您想要的GetComponent
component
如果您只是想访问它,也不需要新的关键字,
GameObject.Find("nameOftheGameObject").GetComponent<simplecloudhander>().mTargetMetadata