C# 成员<;方法>;不能使用

C# 成员<;方法>;不能使用,c#,unity3d,C#,Unity3d,我正在Unity的一个项目中工作,我需要使用脚本获取对象的摄影机,我使用的代码是: Camera cam = GameObject.FindWithTag("string").GetComponent<Camera>(); Camera-cam=GameObject.FindWithTag(“字符串”).GetComponent(); 然而,我得到了这个信息 无法使用实例引用访问成员GameObject.FindWithTag(字符串);改为使用类型名对其进

我正在Unity的一个项目中工作,我需要使用脚本获取对象的摄影机,我使用的代码是:

Camera cam = GameObject.FindWithTag("string").GetComponent<Camera>(); 
Camera-cam=GameObject.FindWithTag(“字符串”).GetComponent();
然而,我得到了这个信息

无法使用实例引用访问成员GameObject.FindWithTag(字符串);改为使用类型名对其进行质量控制

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类摄像机控制器:单行为
{
公共摄像机1;
公共摄像机cam2;
[序列化字段]
公共游戏对象[]摄像机;
PosicionamientoDeObjetos mensajero;
公共游戏对象对象;
Color COLORECAM=新颜色(5,4,2,0.5f);
私人摄像机Hola;
//在第一帧更新之前调用Start
void Start()
{
camera1.enabled=true;
cam2.enabled=false;
}
无效cambiocamara()
{
if(Input.GetKeyDown(KeyCode.Q)){
cam2.enabled=false;
camera1.enabled=true;
}else if(Input.GetKeyDown(KeyCode.C)){
camera1.enabled=false;
cam2.enabled=true;
}
}
//每帧调用一次更新
无效更新()
{
cambiocamara();
if(Input.GetKeyDown(KeyCode.M))
{
mensajero=FindObjectOfType();
mensajero.prefables[0].GetComponent();
Coger();
调试日志(cam2);
}
}
公共空间{
Hola=objetoActalCam.FindWithTag(“CameraSecond”).GetComponent();
}
}

FindWithTag
方法接收字符串作为参数,并传递字符串类型本身,而不是字符串类型的变量

因此,请尝试使用引号,字符串,而不是简单的字符串:

Camera cam = GameObject.FindWithTag("String").GetComponent<Camera>(); 
Camera-cam=GameObject.FindWithTag(“字符串”).GetComponent();
编辑: 在你的问题版本问题被揭露后,你没有打电话

Camera cam = GameObject.FindWithTag("string").GetComponent<Camera>(); 
Camera-cam=GameObject.FindWithTag(“字符串”).GetComponent();
就像你输入的问题一样。相反,你称之为:

Camera cam = gameObjectVariable.FindWithTag("string").GetComponent<Camera>(); 
Camera-cam=gameObjectVariable.FindWithTag(“字符串”).GetComponent();

您必须使用
GameObject
类型调用它,而不是使用
GameObject
变量
objetoActalCam
GameObject
的一个实例

错误消息告诉您:

无法使用实例引用访问成员
GameObject.FindWithTag(String)
;改为使用类型名对其进行质量控制

因此,请遵循它的建议:

public void ObtenerCamara(){
     Hola = GameObject.FindWithTag("CameraSecond").GetComponent<Camera>();
}
public void ObtenerCamara(){
Hola=GameObject.FindWithTag(“CameraSecond”).GetComponent();
}

(具有讽刺意味的是,这与您最初提供给我们的代码非常接近)

您是否已将一个变量/字段
GameObject
命名为您所显示的行附近的某个位置?我们确实需要一个能够帮助您的工具,但这只是一个示例,我的实际代码是这样的(Cam1已经声明)Cam1=CurrentObject.FindWithTag(“SecondCamera”)。GetComponent();这对我来说是行不通的:当你发布准确的代码和错误日志信息时,否则这将很难解决it@JonathanMurilloJaramillo您是从变量调用FindObjectWithTag,而不是从GameObject类型调用FindObjectWithTag(),因此,请使用GameObject.FindObjectWithTag()而不是使用ObjectActalCam.FindObjectWithTag()!你是个天才,非常感谢,我的代码很有效,你是best@JonathanMurilloJaramillo不客气,请记住标记并投票给正确答案(我的或达米恩的答案也是正确的),以便其他用户可以将其视为已解决^^
public void ObtenerCamara(){
     Hola = GameObject.FindWithTag("CameraSecond").GetComponent<Camera>();
}