unity隐藏与显示问题
弎维人
2022年08月29日 00:36
收录于文集
共12篇

新手级博客,勿喷。高阶用法赶紧评论区告诉我,要不我怎么帮你卷别人。

1. 想要实现效果

多个感应区域,当人物靠近感应区域时,某一指定物体显示,当离开感应区域时,物体隐藏。

已知方案:

2. 选择方案

方案一,二存在局限性。只是在肉眼上隐藏,实际物体还在。而,我需要隐藏的物体含有碰撞体。所以隐藏后,碰撞体还在。

只能选择后一种。

3. 存在问题&解决

当物体通过 设置隐藏时,实际为停用此物体。这是,将无法通过 的一种方法查找来再次设置 ,

经过好一整查询,发现有两种方法。

  • transform.find

  • GameObject.Find ,此时文件名使用绝对路径。

3.1

局限:只能逐级寻找。即只能查找当前物体的子对象中的对象。如果需要多级,则需要

 transform.Find(“xxxx”).transform.Find(“xxxx”).transform.Find(“xxxxx”).gameObject.setActive(true);

3.2

直接指定隐藏的物体的绝对路径。如某一结构为

HardWarekeyboardRAMStoragekeyboardPlatform

场景为:  为场景内一对象。 最开始设置 为隐藏,则可通过 GameObject.Find("HardWare/keyboard/keyboardPlatform").SetActive(true); 设置显示。

有人说项目启动时不能设置对象隐藏,其实是因为他们不知道怎么获取已经隐藏的对象。亲试,项目启动为隐藏,可通过路径方法显示(只有一级的还没试)。