我是Unity和C#的初学者。我尝试构建一个基本游戏,当按下一个键时,GameObject在场景中的存在就会被切换。当我按下“Space”时,GameObject确实消失了,但是当我再次按下相同的键时它永远不会出现。以下是代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
private GameObject aj;
private bool flag = true;
void Start () {
aj = GameObject.FindGameObjectWithTag("robo");
}
void Update () {
if (Input.GetKey(KeyCode.Space))
{
flag = !flag;
aj.SetActive(flag);
}
}
}
请告诉我错误的位置。
答案 0 :(得分:3)
将此作为未来观众的答案发布:
游戏对象不再出现的主要原因是因为当您关闭对象时,附加到它的脚本也会被禁用。要解决此问题,您必须让脚本在其他对象上禁用它。我通常使用一个管理器对象,它只是一个带有脚本的空游戏对象。
您的代码中的第二个问题是您在更新中使用if(Input.GetKey(KeyCode.Space))
,它会尝试每帧更改一次。将其更改为if(Input.GetKeyDown(KeyCode.Space))
,使其仅在按下的第一帧时为真。
答案 1 :(得分:1)
从第一个视图看,代码看起来是正确的,我能解决的唯一问题是你禁用了放置脚本的对象或者他的父对象,因此第二次不会执行脚本。 / p>
P.S。我建议你不要使用那个“flag”变量,而是使用GameObject.activeSelf属性更精确。