所以我有一个简单的项目,我用多个方块制作游戏板,它有一个可以打开或关闭的网格。
不幸的是,它不会那样工作。这是我的董事会经理代码:
{{1}}
我的游戏编程经验来自Pygame。在Pygame中,背景必须不断地重新生成,所以如果我想让网格消失,我需要做的就是每帧停止一次blit,然后一帧就消失了。在统一中,由于对象可以移动而无需在代码中重新生成背景,因此网格仅在一个实例化后保留。我只想知道一种方法,当GridToggle.isOn为true时,网格被实例化并将保持在那里直到GridToggle.isOn为false,此时网格将不再存在,直到再次切换为止。谢谢!
答案 0 :(得分:1)
在Unity中,可以停用GameObjects并禁用组件。
如果取消激活GameObject,则将其视为"不存在"。如果您只想禁用渲染,也可以禁用拼贴的渲染器组件。听起来像第一个选项就是你想要的。
停用GameObject也会停用其子GameObjects。要禁用电路板及其内容,我建议将实例化对象作为电路板的子级。你可以通过GameObject的转换来实现这个目的:
instantiatedGameObject.transform.parent = this.transform;
由于您正在使用Toggle,您可以向其添加一个事件侦听器:
GridToggle.onValueChanged.AddListener((value) => this.SetActive(value));