c# - GameObject在Unity中消失后不出现

标签 c# unity3d

我是 Unity 和 C# 的初学者。我尝试构建一个基本游戏,当按下一个键时,游戏对象在场景中的存在会被切换。当我按下“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);
            }
        }
    }

请告诉我错误在哪里。

最佳答案

将此作为答案发布给 future 的观众:

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

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

关于c# - GameObject在Unity中消失后不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49884583/

相关文章:

c# - 尝试通过方法 'System.Web.Helpers.Json..cctor()' 访问方法 'System.Web.Helpers.Json.CreateSerializer()' 失败

unity3d - 如何让游戏音频在某一点循环播放

android - 来自原生 Android 服务的 Unity3d 脚本

c# - 在Visual Studio应用程序中播放声音

c# - Unity 中的加速

unity3d - 如何在动画选项卡中添加一个空关键帧

c# - 如何使用 Unity3D 检测移动设备上的摇动 Action ? C#

c# - .net core 中的默认最大请求长度是多少

c# - XNode 到没有命名空间的子元素的字符串

c# - 使用 .NET 开发新的应用程序?