GameObject在Unity中消失后不会出现

时间:2018-04-17 17:55:28

标签: c# unity3d

我是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);
            }
        }
    }

请告诉我错误的位置。

2 个答案:

答案 0 :(得分:3)

将此作为未来观众的答案发布:

游戏对象不再出现的主要原因是因为当您关闭对象时,附加到它的脚本也会被禁用。要解决此问题,您必须让脚本在其他对象上禁用它。我通常使用一个管理器对象,它只是一个带有脚本的空游戏对象。

您的代码中的第二个问题是您在更新中使用if(Input.GetKey(KeyCode.Space)),它会尝试每帧更改一次。将其更改为if(Input.GetKeyDown(KeyCode.Space)),使其仅在按下的第一帧时为真。

答案 1 :(得分:1)

从第一个视图看,代码看起来是正确的,我能解决的唯一问题是你禁用了放置脚本的对象或者他的父对象,因此第二次不会执行脚本。 / p>

P.S。我建议你不要使用那个“flag”变量,而是使用GameObject.activeSelf属性更精确。