未找到 Unity GameObject [关闭]
Posted
技术标签:
【中文标题】未找到 Unity GameObject [关闭]【英文标题】:Unity GameObject not found [closed] 【发布时间】:2021-06-06 00:49:54 【问题描述】:大家好,这是我第一次尝试在 Unity 中制作简单的游戏,但我卡在了移动脚本中,
我已经为我的播放器编写了脚本,称为“播放器”脚本,所以现在我正在尝试为我的控制器制作一个脚本,它是一个触摸屏板,例如向左、向右和跳跃,我正在关注 youtube 教程,
即使我的脚本和教程脚本相同,但我的有错误,它说我的 GameObject 没有找到或丢失...这是我的 pad 脚本
public class TouchPad :
MonoBehaviour
public GameObject player;
public void OnMouseDown()
if (gameObject.name ==
"Left")
else if (gameObject.name ==
"Right")
else if (gameObject.name ==
"Jump")
public void OnMouseUp()
if (gameObject.name == "Left")
else if (gameObject.name ==
"Right")
else if (gameObject.name ==
"Jump")
public void OnMouseDrag()
if (gameObject.name ==
"Left")
player.GetComponent<player>.
().Left(); <<<<<<< The
<player> got "Could not be
Found"
else if (gameObject.name ==
"Right")
else if (gameObject.name ==
"Jump")
【问题讨论】:
不是您当前的问题,但if (gameObject.name == "Lef")
看起来像是一个错字。你的播放器类是player
还是Player
?您是否将播放器对象拖到检查器中的播放器插槽中?
哦,不,对不起,它不是我的脚本中的错字,只是在这里,问题是 GetComponentplayer.GetComponent<player>.().Left();
无法编译。请编辑问题以包含minimal reproducible example。
【参考方案1】:
这是一个固定的代码。希望能帮助到你。另外,我用一个开关替换了你的 Else If,因为它比 Else if 性能更高。
您的问题是您的代码中有一个 (.) 在 player>.() 之后。应该是的
GetComponent<player>().Left();
但是,我决定修复您的整个代码,因为虽然它确实有效,但对性能不利。
另外,您不需要获取玩家所在的 GameObject。除非你真的需要。
public class TouchPad : MonoBehaviour
public GameObject Player; //We need to reference this in the unity inspector.
private player PlayerScript;
private void Awake()
if(Player != null)
PlayerScript = Player.GetComponent<player>(); //We get player from here.
public void OnMouseDown()
switch(gameObject.name) //Switches are faster than Else if. So use them whenever possible.
case "Left": //Code here.
break;
case "Right": //Code here.
break;
case "Jump": //Code here.
break;
public void OnMouseUp()
switch(gameObject.name)
case "Left": //Code here.
break;
case "Right": //Code here.
break;
case "Jump": //Code here.
break;
public void OnMouseDrag()
switch(gameObject.name)
case "Left": PlayerScript.Left();
break;
case "Right": //Code here.
break;
case "Jump": //Code here.
break;
【讨论】:
Should you answer questions where the cause of the problem is a typo? 他们的代码可以改进,所以我改进并修复了问题。以上是关于未找到 Unity GameObject [关闭]的主要内容,如果未能解决你的问题,请参考以下文章